**
MongoDB角色权限验证
**
用户权限设置
网上总结了四条
MongoDB是没有默认管理员账号,所以要先添加管理员账号,再开启权限认证。
切换到admin数据库,添加的账号才是管理员账号。
用户只能在用户所在数据库登录,包括管理员账号。
管理员可以管理所有数据库,但是不能直接管理其他数据库,要先在admin数据库认证后才可以。
注:在操作用户时,启动mongod服务时尽量不开启授权
内建角色:
数据库用户角色:read、readWrite;
数据库管理角色:dbAdmin、dbOwner、userAdmin;
集群管理角色: clusterAdmin、clusterManager、clusterMonitor、hostManager;
备份恢复角色: backup、restore;
所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
超级用户角色: root; 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
内部角色: __system;
角色说明:
Read: 允许用户读取指定数据库
readWrite: 允许用户读写指定数据库
dbAdmin: 允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin: 允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
dbOwner: 允许在当前DB中执行任意操作
readAnyDatabase: 赋予用户所有数据库的读权限,只在admin数据库中可用
readWriteAnyDatabase: 赋予用户所有数据库的读写权限,只在admin数据库中可用
userAdminAnyDatabase:赋予用户所有数据库管理User的权限,只在admin数据库中可用
dbAdminAnyDatabase: 赋予管理所有数据库的权限,只在admin数据库中可用
root: 超级账号,超级权限,只在admin数据库中可用。
集群管理角色:
clusterAdmin: 赋予管理集群的最高权限,只在admin数据库中可用
clusterManager: 赋予管理和监控集群的权限
clusterMonitor: 赋予监控集群的权限,对监控工具具有readonly的权限
hostManager: 赋予管理Server
1、添加管理员
use admin
db.createUser({user:'root',pwd:'123456',roles:[{role:'readWriteAnyDatabase',db:'admin'}]})
2、创建指定数据库的用户,并且分配权限
use demo
db.createUser({user:'user',pwd:'123456',roles:[{role:'readWrite',db:'demo'}]})
>db.auth('user', '123456')
//返回 1 ,则说明用户密码设置ok
3、重启mongodb服务
cd /opt/modules/mongodb/
ps aux|grep mongod
//先关掉服务(killing process with pid XXX)
bin/mongod --config /usr/local/mongodb/bin/mongodb.conf -shutdown
//开启权限认证服务,需要附加--auth
bin/mongod --config /usr/local/mongodb/bin/mongodb.conf --auth
注:文件位置不要错
4、终端登录
use admin
show dbs
提示这个不要慌,说明权限认证已经开启了。这时候我们进行认证
db.auth('root','123456')
其中有demo和demo1。下面开始测试普通账号
5、普通用户登录
退出终端重新登录
use demo
db.demo.find()
再次提示这个错误,说明正确,那么开始认证
db.auth('user','123456')
上一篇存过的数据又出现了。说明权限验证通过。我们再看nav下进行连接。
连接user控制的demo数据库
我们登录了user用户只能查看到demo数据库。看不到demoo数据库。
我们再去添加一个新用户user2控制demoo库
nav下进行登录
好的。两个用户的权限认证都是正确的。
6、查看已存在的用户
查看已存在的用户
db.system.users.find()
7、删除用户
db.dropUser('demo')
注:删除用户时,使用哪个数据库(use demo)。则才能删除当前数据库下面的用户
下一篇:MongoDB 增删改查(二)