- 要以用户身份进行身份验证,您必须提供用户名,密码以及 与该用户关联的身份验证数据库。
- 添加用户时,可以在特定数据库中创建用户。该数据库是用户的身份验证数据库。
- 用户可以拥有跨不同数据库的权限; 也就是说,用户的权限不限于其身份验证数据库。通过分配给其他数据库中的用户角色,在一个数据库中创建的用户可以拥有对其他数据库执行操作的权限。
-
创建 root 用户
use admin db.createUser({user:"root",pwd:"root",roles:["root"]})# 创建root用户 db.createUser({user:"anyroot",pwd:"anyroot",roles:[{role:"userAdminAnyDatabase",db:"admin"},{role:"readWriteAnyDatabase",db:"admin"}]})
-
重启数据库
db.adminCommand({shutdown:1})
-
在启动的配置文件中加入
security
选项启用访问控制。systemLog: destination: file logAppend: true path: /Users/machunyu/Work/mongodb/logs/run.log processManagement: fork: true pidFilePath: /Users/machunyu/Work/mongodb/logs/mongod.pid net: port: 27017 bindIp: 127.0.0.1 wireObjectCheck: true storage: dbPath: /Users/machunyu/Work/mongodb/data engine: wiredTiger security: authorization: enabled
-
连接数据
mongo --port 27017 -u root -p root --authenticationDatabase "admin"
-
创建一个带有描述的用户
db.createUser({ user:"mcy", pwd:"mcy", customData:{ name:"machunyu", email:"[email protected]", age:18 }, roles:[ {role:"clusterManager",db:"admin"} ] })
-
创建用户
-
创建
root
用户。use admin db.createUser({user:"root",pwd:"root",roles:["root"]})
-
创建操作多个数据库的读写权限。
use admin db.updateUser("root",{pwd:"root",roles:[{role:"readWriteAnyDatabase",db:"admin"}]})
-
-
修改用户权限
use admin db.updateUser("root",{pwd:"root",roles:[{role:"clusterAdmin",db:"admin"}]})
-
追加用户权限
#追加集群管理权限 use admin db.grantRolesToUser("anyroot",[{role:"clusterAdmin",db:"admin"}])
-
删除用户
db.dropUser("anyroot")//删除单个用户 db.dropAllUser(); //删除全部用户 db.runCommand({"dropAllUsersFromDatabase":1}) //删除全部用户
mongo --port 27017 -u root --authenticationDatabase "admin" -p "abc123"
- 数据库用户角色(Database User Roles)
- read: 授予User只读数据的权限
- readWrite: 授予User读写数据的权限
- 数据库管理角色(Database Administration Roles)
- dbAdmin: 在当前dB中执行管理操作
- dbOwner: 数据库所有者可以对数据库执行任何管理操作。这个角色享有
readWrite
,dbAdmin
和userAdmin
角色。 - userAdmin: 提供在当前数据库上创建和修改角色和用户的功能。由于该
userAdmin
角色允许用户向任何用户(包括他们自己)授予任何权限,因此该角色还间接地提供 对数据库的超级用户访问权限,或者。
- 备份和还原角色(Backup and Restoration Roles)
- backup
- restore
- 跨库角色(All-Database Roles):
- readAnyDatabase: 授予在所有数据库上读取数据的权限
- readWriteAnyDatabase: 授予在所有数据库上读写数据的权限
- userAdminAnyDatabase: 授予在所有数据库上管理User的权限
- dbAdminAnyDatabase: 授予管理所有数据库的权限
- 集群管理角色(Cluster Administration Roles):
- clusterAdmin: 授予管理集群的最高权限
- clusterManager: 授予管理和监控集群的权限
- clusterMonitor: 授予监控集群的权限,对监控工具具有readonly的权限
- hostManager: 管理Server