mongo用户管理
2019-08-13 本文已影响0人
小小了墨
创建用户
> db.createUser(
{
user: '',
pwd: '',
customData: ''
roles: [
{
role: '',
db: ''
}
]
}
)
-
user
: 用户名。 -
pwd
:密码。 -
customData
:任意信息,可以为该用户的提示信息,介绍用户什么的。 -
roles
:指定用户的角色,可以为空数组设置为空角色 -
role
:指定角色 -
db
:指定数据库
内置角色
- 数据库用户角色:read, readWrite
- 数据库管理角色:dbAdmin, dbOwner, userAdmin
- 集群管理角色:clusterAdmin, clusterManager, clusterMonitor, hostManager
- 备份恢复角色:backup, restore
- 所有数据库角色:readAnyDatabase, readWriteAnyDatabase, userAdminAnyDatabase, dbAdminAnyDatabase
- 超级用户角色:root
- 内部角色:__system
新增自定义角色
> db.createRole(role, writeConcern)
由于本人使用的是内置的,所以这里就一笔带过
认证用户
创建完用户后,可以通过认证来确定是否创建或者修改成功
> db.auth(user, pwd)
返回的是1,则认证成功,是0则失败
删除用户
> db.dropUser(userName)
# 或者 删除当前库的所有用户
> db.dropAllUser()
-
userName
(string):删除的用户名
查看当前库的所有用户
> show users
# 或者
> db.system.users.find()
给用户授权
如果在创建的时候,roles里面的权限没有或者是想额外再添加
> db.grantRolesToUser(username, roles)
-
username
(sting):用户名 -
roles
(array):要授予用户的附加角色的数组
取消用户某个或者多个角色
> db.revokeRolesFromUser(user, roles)
-
roles
:若处于同数据库,则可以直接写角色,否则要全写
> db.revokeRolesFromUser('test', [
'readWrite'
])
# 或者
> db.revokeRolesFromUser('test', [
{ role: 'readWrite', db: 'testDatabase' }
])
修改用户信息
会完全替换调创建时的信息
> db.updateUser(username, update)
修改用户密码
> changeUserPassword(username, password)
参数都是string类型
查看用户拥有的角色
> db.getUser(username)
查看角色权限
> db.getRole(rolename, arg)
# 查看所有的
> db.getRoles()
-
arg
(object):-
showBuiltinRoles
:默认为false,仅显示用户定义的角色,为true时,显示中还包含内置角色 -
showPrivileges
:默认为false,仅显示该角色继承权限的角色,为true时,返回从其他角色继承的和直接定义的权限
-
修改自定义角色
> db.updateRole(rolename, update)
删除自定义角色
> db.dropRole(rolename)
# 全部自定义角色删除
> db.dropAllRoles()
给mongo设置权限校验
找到对应的mongo目录下的mongod.conf
本人是用的centos7的yum安装的,所以在/etc/mongod.conf
# 将security放开
security:
authorization: enabled # 注意此处缩进
如果没有关闭防火墙或者放开端口,也可能mongo服务起不来
$ firewall-cmd --zone=public --permanent --add-port=27017/tcp
# 重启
$ firewall-cmd --reload
# 查看是否放开
$ firewall-cmd --list-ports
然后重启或者启动服务
$ systemctl start mongod.service
# 或者
$ systemctl restart mongod.service