一、服务器说明
系统环境版本:CentOS Linux release 7.3.1611 (Core)
MongoDB版本:5.0.11
二、环境配置
2.1、停止防火墙
systemctl status firewalld #查看firewall systemctl stop firewalld #停止firewall systemctl disable firewalld #禁止firewall开机启动 reboot
2.2、关闭selinux
vi /etc/selinux/config SELINUX=disabled
三、下载MongoDB Community Server(社区版)
3.1、下载地址
下载地址:https://www.mongodb.com/try/download/community
3.2、下载步骤
四、安装
4.1、上传MongoDB安装包 mongodb-linux-x86_64-rhel70-5.0.11.tgz 到 /usr/local/ 目录下
4.2、解压安装包
[root@localhost local]# tar -zxvf mongodb-linux-x86_64-rhel70-5.0.11.tgz
4.3、重命名解压后的包名称
[root@localhost local]# mv mongodb-linux-x86_64-rhel70-5.0.11 mongodb
4.4、创建dbpath和logpath
[root@localhost mongodb]# mkdir -p /usr/local/mongodb/data /usr/local/mongodb/log /usr/local/mongodb/conf
4.5、启动mongodb服务
#进入mongodb目录 [root@localhost mongodb]#cd /usr/local/mongodb #启动mongodb服务 [root@localhost mongodb]#bin/mongod --port=27017 --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/log/mongodb.log --fork
#访问mongodb [root@localhost mongodb]#bin/mongo
#查看mongodb数据库 show dbs
4.6、启动mongodb服务的参数说明
--dbpath:指定数据文件存放目录
--logpath:指定日志文件,注意是指定文件不是目录
--logappend:使用追加的方式记录日志
--port:指定端口,默认为27017
--bind_ip:默认只监听localhost网卡
--fork:后台启动
--auth:开启认证模式
4.7、关闭mongodb服务
- 方式一:
#进入mongodb目录 [root@localhost mongodb]#cd /usr/local/mongodb/bin #关闭mongodb服务 [root@localhost mongodb]# ./mongod --port=27017 --dbpath=/usr/local/mongodb/data --shutdown
- 方式二、
use admin --进入admin库 db.shutdownServer() --关闭服务 exit --退出shell即可
4.8、利用配置文件启动mongodb服务
- 添加环境变量
#修改/etc/profile,添加环境变量,方便执行MongoDB命令 export MONGODB_HOME=/usr/local/mongodb PATH=$PATH:$MONGODB_HOME/bin #重新加载环境变量 source /etc/profile
- 创建并编辑mongo.conf文件
[root@localhost ~]# cd /usr/local/mongodb/conf/ [root@localhost conf]# touch mongo.conf [root@localhost conf]# vim mongo.conf #增加如下内容(注意:一定要yaml格式) systemLog: destination: file path: /usr/local/mongodb/log/mongod.log # log path logAppend: true storage: dbPath: /usr/local/mongodb/data # data directory engine: wiredTiger #存储引擎 journal: #是否启用journal日志 enabled: true net: bindIp: 0.0.0.0 port: 27017 # port processManagement: fork: true
4.9、启动mongodb服务
[root@localhost mongodb]# bin/mongod -f /usr/local/mongodb/conf/mongo.conf
4.10、访问mongodb
五、开放对外端口
systemctl status firewalld # 查看防火墙状态 firewall-cmd --zone=public --add-port=27017/tcp --permanent # mongodb默认端口号 firewall-cmd --reload # 重新加载防火墙 firewall-cmd --zone=public --query-port=27017/tcp # 查看端口号是否开放成功,输出yes开放成功,no则失败
六、设置MongoDB开机自启动
6.1、在/lib/systemd/system/目录下新建mongodb.service文件,内容如下:
[Unit] Description=mongodb After=network.target remote-fs.target nss-lookup.target [Service] Type=forking ExecStart=/usr/local/mongodb/bin/mongod --config /usr/local/mongodb/conf/mongo.conf ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/usr/local/mongodb/bin/mongod --shutdown --config /usr/local/mongodb/conf/mongo.conf PrivateTmp=true [Install] WantedBy=multi-user.target
注:其中 /usr/local/mongodb 需要设置为自己MongoDB的安装目录下。
*注:conf和service文件中设置路径,注意需要设置为绝对路径。
6.2、设置权限
chmod 754 mongodb.service
6.3、启动关闭服务,设置开机启动
#开机启动 systemctl enable mongodb.service #启动服务 systemctl start mongodb.service #关闭服务 systemctl stop mongodb.service
七、自定义用户
创建用户,设置账号,密码,权限
// admin数据库 > use admin switched to db admin > db.createUser({ user:"root", pwd:"123456", roles:["root"] }) Successfully added user: { "user" : "root", "roles" : [ "root" ] } // 其他数据库 > use test switched to db test > db.createUser({ user:"admin", pwd:"123456", roles:["readWrite", "dbAdmin"] }) Successfully added user: { "user" : "root", "roles" : [ "root" ] }
八、启用身份验证
8.1、修改mongodb.conf文件,启用身份验证
vi /etc/mongod.conf security: authorization: "enabled" # disable or enabled
8.2、重启MongoDB
systemctl restart mongodb
8.3、用户认证
> use admin switched to db admin > db.auth("root", "123456") 1 // 授权成功
// 其他常用命令 db.updateUser(user, writeConcern) # 更新用户 db.dropUser('test') # 删除用户
8.4、远程连接
// 终端连接 mongo 10.128.218.14:27017/database -u username -p password // mongoose方式连接 mongoose.connect('mongodb://username:password@host:port/database?options...', {useNewUrlParser: true}); // 通过客户端连接
九、用户权限角色说明
规则 | 说明 |
---|---|
root | 只在admin数据库中可用。超级账号,超级权限 |
Read | 允许用户读取指定数据库 |
readWrite | 允许用户读写指定数据库 |
dbAdmin | 允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile |
userAdmin | 允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户 |
clusterAdmin | 只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限 |
readAnyDatabase | 只在admin数据库中可用,赋予用户所有数据库的读权限 |
readWriteAnyDatabase | 只在admin数据库中可用,赋予用户所有数据库的读写权限 |
userAdminAnyDatabase | 只在admin数据库中可用,赋予用户所有数据库的userAdmin权限 |
dbAdminAnyDatabase | 只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限 |