超级管理员
为了更加安全的访问 mongodb,需要访问者提供用户名和密码,于是需要在mongodb 中创建用户
采用了角色-用户-数据库的安全管理方式
常用的的系统角色有:
root: 只在 admin 数据中可使用,超级账户,超级权限。root又称dbOwner
Read: 允许用户读取指定的数据库
readWrite: 允许用户读写指定的数据库
一、创建超级用户
以windows为例
1、启动不鉴权的mongo数据库服务
mongod --port 27017 --dbpath E:mongo_db
2、创建进入使用admin库名
use admin
3、创建admin用户,密码123,角色为root身份,管理admin数据库
db.createUser( { user: 'admin', pwd: '123', roles:[{role:'root',db:'admin'}] } )
4、关闭mongo数据库服务
ctrl+c
5、带鉴权方式启动
mongod --port 27017 --dbpath E:mongo_db --auth
6、使用认证某个数据方式终端连接
mongo -u admin -p 123 --authenticationDatabase admin
此后的admin可以查看任何数据
延伸:
1、使用无鉴权方式连接数据库
mongo --port 27017
此后的用户无法查看任何数据
2、如果使用不鉴权方式启动mongo数据库服务
mongod --port 27017 --dbpath E:mongo_db
则admin账号设置是无效的。
二、普通用户管理
使用超级管理员登录,然后进入用户管理操作
查看当前数据库的用户
use demo
show users
创建普通 用户
db.createUser( { user: 'xingyeah', pwd: '123', roles:[{role:'readWrite',db:'demo'}] } )
退出 root 连接 使用 xignyeah 登录
mongo -u xingyeah -p 123 --authenticationDatabase
切换数据库,执行命令查看效果
三、修改密码和角色
yoghurt:可以修改密码, 或者roles 属性
# 修改密码
db.updateUser('xingyeah',{pwd: '456'})
# 修改属性
db.updateUser('xingyeah',{roles:[{role: 'read',db:'demo'}]})
四、常见报错
Linux
启用安全认证
修改配置文件
sudo vi /etc/mongod.conf
启用身份验证
注意: keys 和 values 之间一定要加空格,否则会解析报错
security:
authorization enabled