MongoDB单机与集群的用户鉴权
一、单机
注:这里单机采用配置文件的方式启动
先使用无验证的方式启动mongo,进入shell界面,输入mongo进入客户端
创建root用户
use admin
db.createUser({user:"root", pwd:"123456", roles: [ { role: "root", db: "admin" }]})
接下来创建有只读权限的普通用户
use admin
db.createUser({user:"zy", pwd:"123456", roles: [ { role: "readAnyDatabase", db: "admin" }]})
再创建有读写权限的普通用户
use admin
db.createUser({user:"zhuyun", pwd:"123456", roles: [ { role: "readWriteAnyDatabase", db: "admin" }]})
用户创建完成后,再修改配置文件
vim /etc/mongod.conf
security:
authorization: enabled
保存后,重启mongodb
service mongod restart
此时再次进入mongo,查看数据库的时候就需要验证身份了,直接查看会报错
验证一下只读用户的权限,是否只能读,而不能增、删、改
use admin
db.auth("zy", "123456")
可以查看
无法增、删、改
二、集群
集群创建用户和权限的方式和上面一样,步骤也是一样。
这里集群采用命令行启动的方式,配置直接写在命令行上面。
先用无验证方式启动集群,创建用户后重启mongodb集群。重启的时候,加上以下参数:
config server、mongod加上:
--auth --keyFile /var/lib/mongodb/config/keyfile
mongos后面加上:
--keyFile /var/lib/mongodb/config/keyfile
启动后的进程类似于如下:
用下面的方式生成认证文件keyfile,再复制到其他节点上去:
openssl rand -base64 756 > /root/mongodb/keyfile
chmod 400 /root/mongodb/keyfile
如此一来,大功告成。