环境清单
- 阿里云Centos7
- mongoDB 4.0.10
- 使用的是yum安装
相关文件位置
- 配置文件位置
/etc/mongod.conf
- log文件位置
/var/log/mongodb/mongod.log
- sock文件位置
/tmp/mongodb-27017.sock
设置单个root用户
- step1 进入mongo,创建root用户
> mongo
> use admin
> db.createUser({user:"admin",pwd:"123456",roles:[{role:"root",db:"admin"}]})
验证
> db.auth("admin", "123456")
- step2 开启用户验证
打开配置文件
# vi /etc/mongod.conf
添加:
security:
authorization: enabled
- 重启服务
退出mongoDB
> exit
重启服务
# sudo service mongod start
如果出现失败,删除sock文件后再次重启:
# rm -f /tmp/mongodb-27017.sock
开放端口
此处防火墙已开启,没有开启的先开启防火墙
CentOS7 防火墙设置
-
开放本机端口:
# firewall-cmd --zone=public --add-port=27017/tcp --permanent
-
设置阿里云服务器端口
控制台>点击主机>安全>防火墙>添加规则>自定义 TCP 27017>
连接数据库
工具使用的是Robo 3T
file>connet>create>connection

Authentication

为指定的数据库设置用户
> mongo
> use admin
> db.auth("admin", '123456')
> db.createUser( {user: "test",pwd: "123456",roles: [ { role: "read", db: "数据库名称" } ]})
注意几点:
- 1.创建用户必须在admin数据库下
- 2.已开启用户验证的话得先验证才能操作
- 3.role字段为用户角色设置,参照下面得mongoDB 用户角色
- 4.单独为某个数据库设置用户后可以在Robo 3T 中单独连接
mongoDB 用户角色
- 1.数据库用户角色:read、readWrite;
- 2.数据库管理角色:dbAdmin、dbOwner、userAdmin;
- 3.集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
- 4.备份恢复角色:backup、restore;
- 5.所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
- 6.超级用户角色:root
这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
其中MongoDB默认是没有开启用户认证的,也就是说游客也拥有超级管理员的权限。userAdminAnyDatabase:有分配角色和用户的权限,但没有查写的权限
网友评论