前提条件:具备管理员账号
注意:MongoDB原生特性:账号都在特定的库里认证,不像mysql使用全局认证,也就是说登录时mysql不需指定认证的库,而mongo的账号在特定的库中,admin库或者普通库,因此登录时需指定--authenticationDatabase <dbname> 指定创建User的数据库;在特定的数据库中创建User,该DB就是User的authentication database。在连接mongo时,使用参数 --authenticationDatabase,会认证 -u 和 -p 参数指定的账户和密码。如果没有指定验证数据库,mongo使用连接字符串中指定的DB作为验证数据块。
---
查看所有用户
use admin /使用admin库
show users
---
创建只读用户
use admin /使用admin库
db.createUser({user:'readonly',pwd:'123456',roles:['readAnyDatabase']}) /创建具有所有库只读的readonly账号。
---
创建读写用户
use admin /使用admin库
db.createUser({user:'rw',pwd:'123456',roles:['readWriteAnyDatabase']}) /创建具有所有库读写的账号。
---
创建单库只读,读写用户
use admin /使用admin库,也可以在use 单库,这样登录时需使用该库做认证
db.createUser({user: "readonly2", pwd: "123456", roles: [{ role: "readWrite", db: "account_openid_0" }]}) /创建单库只读账号
db.createUser({user: "readonly3", pwd: "123456", roles: [{ role: "read", db: "cash_guild_room_flow" }]}) /创建单库读写账号
---
更新用户权限
use admin /使用admin库
db.updateUser("readonly2",{roles:[ {role:"read",db:"testDB"} ]}) /修改单库权限为只读
---
增加用户权限
use admin /使用admin库
db.grantRolesToUser("rw", [{role:"readWrite", db:"audit_admin_op_log"}]) /给rw用户增加单库读写权限