用户权限管理攻略——MongoDB
目录
MongoDB数据库角色
MongoDB用户权限设置
MongoDB数据库角色
- 数据库用户角色:read、readWrite;
- 数据库管理角色:dbAdmin、dbOwner、userAdmin;
- 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
- 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
超级用户角色:root
- Read:允许用户读取指定数据库
- readWrite:允许用户读写指定数据库
- dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
- userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
admin数据库中可用
- readAnyDatabase: 赋予用户所有数据库的读权限
- readWriteAnyDatabase: 赋予用户所有数据库的读写权限
- userAdminAnyDatabase: 赋予用户所有数据库的userAdmin权限
- dbAdminAnyDatabase: 赋予用户所有数据库的dbAdmin权限。
- root:只在admin数据库中可用。超级账号,超级权限
MongoDB用户权限设置
用户权限设置
- MongoDB是没有默认管理员账号,所以要先添加管理员账号,再开启权限认证。
- 切换到admin数据库,添加的账号才是管理员账号。
- 用户只能在用户所在数据库登录,包括管理员账号。
- 管理员可以管理所有数据库,但是不能直接管理其他数据库,要先在admin数据库认证后才可以。
创建管理员账户(必须在admin数据库下才是管理员账号)
在admin数据库中,添加一个用户并赋予root角色。
use admin
db.createUser( {
user: "adminUser",
pwd: "adminPass",
roles: [ {role: “root", db: "admin"}]
} )
# user 代表新用户名字 pwd 代表新用户密码
db.auth("adminUser", "adminPass") # 认证
db.getUsers() # 查看用户
创建普通用户,包括使用权限以及能够访问的数据库
- 一旦经过认证的用户管理员,可以使用db.createUser()去创建额外的用户。
一定要切换到对应的数据库再创建用户
db.createUser(
{user:"用户",
pwd:"123",
roles:[{role:"readWrite",db:"test"},
{role:"read",db:"zuo"}
]
}
)
db.auth(“用户”, “123”) # 认证
db.getUsers() # 查看用户
可以使用以下命令,来查看创建的用户
show users
db.system.users.find()
修改密码和用户信息
修改密码和用户信息
db.runCommand( {
updateUser:"username",
pwd:"xxx",
customData:{title:"xxx"}
} )
删除数据库用户
use admin
db.dropUser('username')
启用权限验证
修改mongo.conf文件,最后一行添加
#启用权限访问
auth=true
- 然后重新启动MongoDB
- net stop MongoDB
- net start MongoDB
进入客户端之后,再切换到对应数据库
例:use test db.auth(“用户”, “123”) # username, password
还没有评论,来说两句吧...