date: 2020-03-16title: MongoDB——筑基期 #标题
tags: MongoDB #标签
categories: mongodb # 分类
接触mongodb第一天,需要做些什么?来来来…..看这里。
如果某个技术自己之前没有接触过,那么你必定要去它的官网溜一圈,这次也一样:mongodb官网。
关于mongodb的功能特性,在知乎上看了一个写的蛮好的,可以去看一下mongodb是什么?。
部署mongodb
下载并解包
[root@mongo src]# wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.3.tgz[root@redis src]# tar zxf mongodb-linux-x86_64-rhel70-4.2.3.tgz[root@mongo src]# mv mongodb-linux-x86_64-rhel70-4.2.3 /usr/local/mongo
添加环境变量
[root@mongo src]# echo 'export PATH=/usr/local/mongo/bin/:${PATH}' >> /etc/profile[root@mongo src]# source /etc/profile
定义配置文件
[root@mongo src]# mkdir -p /data/mongodb/27017 # 创建工作路径[root@mongo src]# cat /data/mongodb/27017/mongodb.conf # 主配置文件如下systemLog: # 日志相关destination: filelogAppend: true # 日志写入模式为追加path: /data/mongodb/27017/mongodb.log # 定义日志文件storage: # 定义存储相关dbPath: /data/mongodb/27017/ # 数据存储路径journal:enabled: trueprocessManagement: # 进程管理相关,fork表示预派生fork: truenet:port: 27017 # 监听端口bindIp: 0.0.0.0 # 监听地址
启动mongodb
# 创建系统用户并更改属主[root@mongo ~]# useradd mongodb -s /sbin/nologin[root@mongo ~]# chown -R mongodb.mongodb /usr/local/mongo/ /data/mongodb/# 使用普通用户启动[root@mongo ~]# su -s /bin/bash -c "mongod -f /data/mongodb/27017/mongodb.conf" mongodbabout to fork child process, waiting until server is ready for connections.forked process: 62064child process started successfully, parent exiting
确定端口在监听
[root@mongo ~]# ss -lnpt | grep 27017LISTEN 0 128 *:27017 *:* users:(("mongod",pid=62064,fd=11))
登录到mongodb
[root@mongo ~]# mongo --host 192.168.20.2 --port 27017
如果系统没有优化过相关配置,那么在第一次登录时大多会报以下warning事项(如果不是使用普通用户启动,还会多报一个用户相关的warning):

现在开始解决这些warning。。。
禁止内存巨大页
[root@mongo ~]# echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled[root@mongo ~]# echo 'never' > /sys/kernel/mm/transparent_hugepage/defrag# 写入以下文件并添加执行权限,以防止重启后失效[root@mongo ~]# tail -2 /etc/rc.d/rc.local # 写入下面两行配置echo 'never' >/sys/kernel/mm/transparent_hugepage/enabledecho 'never' >/sys/kernel/mm/transparent_hugepage/defrag[root@mongo ~]# chmod +x /etc/rc.d/rc.local
WARNING: Access control is not enabled for the database
[root@mongo ~]# mongo # 登录到mongodb,默认为本机的27017端口# 创建用户> use admin> db.createUser(... {... user: "myUserAdmin",... pwd: "abc123",... roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]... }... )> db.shutdownServer() # 关闭数据库> exit# 启动mongodb的选项中增加“--auth”选项。开启认证模式[root@mongo ~]# su -s /bin/bash -c "mongod --auth -f /data/mongodb/27017/mongodb.conf" mongodb[root@mongo ~]# mongo # 再次登录到数据库,就没有warning信息了,但是需要认证才可对数据库进行操作MongoDB shell version v4.2.3connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapImplicit session: session { "id" : UUID("2cad3643-3d75-41d3-9011-a91MongoDB server version: 4.2.3> show databases # 在认证之前不会查看到什么信息> use admin # 必须进入admin库进行认证,否则会认证失败> db.auth('myUserAdmin','abc123') # 使用刚才新建的用户进行认证1> show databases # 即可查看到库信息admin 0.000GBconfig 0.000GBlocal 0.000GB
mongodb基础指令
查看所有数据库
> show dbsadmin 0.000GBconfig 0.000GBlocal 0.000GB
切换数据库
> use admin
显示所有表
> show collections
显示数据库状态信息
> db.stats()
显示集合表状态信息
> db.numbers.stats()
停止数据库
> db.shutdownServer()
获取数据库操作命令
> db.help
获取表操作命令
> db.foo.help
mongodb概念解析
参考菜鸟教程
