3.mongodb用户管理
1.用户及权限管理
验证库:建立用户时use到的库,在使用用户时,要加上验证库才能登陆。
对于管理员用,必须在admin下创建
1.建立用户时,use到的库,就是此用户的验证库
2.登陆时,必须明确指定验证库才能登陆
3.通常,管理员的验证库是admin,普通用户的验证库一般是所管理的库设置为验证库
4.如果直接登录到数据库,不进行use,默认的验证库是test,不是我们生产建议的。
5.从3.6版本开始,不添加bind Ip参数,默认不让远程登录,只能本地管理员登录。
2.用户创建语句
use admin db.createUser { user: "<name>", pwd: "<cleartext password>", roles: [ { role: "<role>", db: "<database>" } | "<role>", ... ] } 基本语法说明: user:用户名 pwd:密码 roles: role:角色名 db:作用对象 role:root, readWrite,read 验证数据库: mongo -u oldboy -p 123 10.0.0.53/oldboy
3.用户管理例子
创建超级管理员:管理所有数据库(必须use admin再去创建) $ mongo use admin db.createUser( { user: "root", pwd: "root123", roles: [ { role: "root", db: "admin" } ] } )
配置文件中,加入以下配置
security:
authorization:enabled ###支持验证
重启mongodb
systemctl restart mongod
4. 创建库管理用户
mongo -uroot -proot123 admin use app db.createUser( user: "admin", pwd:"admin", roles:[ { role:"dbAdmin", db:"app" } ] ) db.auth('admin','admin') 登录测试 : mongo -uadmin -padmin 172.17.94.206/app
5.创建对app 数据库,读写权限的用户app01 ******
(1)超级管理员用户登录 mongo -uroot -proot123 admin (2)选择一个验证库 use app (3)创建用户 db.createUser( { user:"app01", pwd:"app01", roles:[{role:"readWrite",db:"app"}] } )
mongo -uapp01 -papp01 远程地址/app库
6.创建app数据库读写权限的用户并对test数据库具有读权限
####创建一个用户对多个库具有不同的权限
mongo -uroot -proot123 远程ip地址/admin use app db.createUser( { user:"app03", pwd:"app03", roles:[ { role:"readWrite", db:"app"},{ role:"read",db:"test" } ] } )
7 查询mongodb中的用户信息
mongo -uroot -proot123 远程ip地址/admin db.system.users.find().pretty()
8.删除用户(root 身份登录,use到验证库)
删除用户 mongo -uroot -proot123 172.17.94.206/admin use app db.dropUser("admin")