在 mongodb 中,使用 db.createUser() 方法创建用户。db.createUser() 方法格式如下:
db.createUser({user:"", pwd: "", roles:[{role:"", db: ""}]})
其中:
user:表示用户名
pwd:表示密码
roles:表示用户权限,注意:接收的是一个数组
role:角色名称
db:数据库名
MongoDB中常见的角色如下:
数据库用户角色
read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
数据库管理角色
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
dbOwner
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
集群管理角色
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限
clusterManager
clusterMonitor:集群监控
hostManager
备份恢复角色
backup:备份角色
restore:恢复角色
所有数据库角色
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限
超级用户角色
root:只在admin数据库中可用。超级账号,超级权限。
实例:创建 admin 账号,密码为 123456,允许在 admin 数据库中进行任何操作。如下:
> use admin switched to db admin > > db.createUser({user:'admin', pwd:'123456', roles:[{role:'userAdminAnyDatabase', db:'admin'}]}) Successfully added user: { "user" : "admin", "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" } ] }
MongoDB中删除用户,比创建用户简单太多了。只需要使用 db.dropUser('用户名') 命令即可。例如:
> db.dropUser('admin'); true
创建用户后,我们还需要在启动 mongodb 的时候使用 --auth 选项开启权限管理功能。开启权限如下:
mongod.exe -f mongo.cfg --auth
然后,使用 db.auth() 验证权限。例如:
D:mongodb-3.4.15in> mongo.exe MongoDB shell version v3.4.15-52-g874aa31cae connecting to: mongodb://127.0.0.1:27017 MongoDB server version: 3.4.15-52-g874aa31cae > use test switched to db test > db.auth("test", "123456") 1
注意:db.auth() 返回1表示权限验证成功。