mongodb用户管理
Posted 长城之上是千亿的星空,星空之上是不灭的守望。
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mongodb用户管理相关的知识,希望对你有一定的参考价值。
角色具体说明:
Read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
dbOwner:数据库拥有者,包含readWrite、dbAdmin、userAdmin
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限
root:只在admin数据库中可用。超级账号,超级权限
__system: 内部角色,不建议使用
创建一个不受访问限制的超级用户
use admin
db.createUser(
{
user:"root",
pwd:"www.ttlsa.com",
roles:["root"]
}
)
创建一个超级用户
超级用户的role有两种,userAdmin和userAdminAnyDatabase
use admin
db.createUser(
{
user: "admin",
pwd: "www.ttlsa.com",
roles:[
{
role: "userAdminAnyDatabase",
db: "admin"
}]
}
)
db是指定数据库的名字,admin是管理数据库。
创建普通用户
use admin
db.createUser(
{
user:"dev",
pwd:"www.ttlsa.com",
roles:[
{role:"read",db:"db01"},
{role:"read",db:"db02"},
{role:"read",db:"db03"}
]
}
)
删除用户
首先进入目标库:use test
db.dropUser("testuser")
db.system.users.remove({user:"testuser"});
db.removeUser("testuser");
查看当前用户权限
db.runCommand(
{
usersInfo:"userName",
showPrivileges:true
}
)
只能查看当前数据库中的用户,哪怕当前数据库admin数据库,也只能查看admin数据库中创建的用户。
修改用户密码
use admin
db.changeUserPassword("username", "xxx")
查看用户信息
db.runCommand({usersInfo:"userName"})
db.system.users.find()
修改用户密码和用户信息
db.runCommand(
{
updateUser:"username",
pwd:"xxx",
customData:{title:"xxx"}
}
)
添加角色
首先进入目标库:use test
db.grantRolesToUser( "testuser", [ { role: "read",db:"admin"} ] )
回收角色权限
首先进入目标库:use test
db.revokeRolesFromUser("testuser",[ { role: "read",db:"admin"} ] )
搭建认证环境和认证登录
1、找到mongodb配置文件,设置noauth=true
重启Mongodb后,登录admin账号,创建一个超级权限用户
use admin
db.createUser({user:‘root‘,pwd:‘root‘,roles:[{ "role" : "root", "db" : "admin" }]});
2、关闭mongodb
3、启用认证参数
要保证权限认证生效,需要在mongodb配置文件中加入auth=true,同时取消掉noauth=true
4、启动Mongodb
5、认证登录
> use admin
switched to db admin
> db.auth(‘root‘,‘root‘)
1
> use hong
switched to db hong
> show collections;
mycol
system.users
> db.mycol.find();
{ "_id" : ObjectId("56f255b77fa46acddeb4507b"), "name" : "mycol" }
注:
与用户管理相关的操作基本都要在admin数据库下运行,要先use admin;
如果在某个单一的数据库下,那只能对当前数据库的权限进行操作;
db.addUser是老版本的操作,现在版本也还能继续使用,创建出来的user是带有root role的超级管理员。
以上是关于mongodb用户管理的主要内容,如果未能解决你的问题,请参考以下文章