Mongo 权限检查
Posted dailycode
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mongo 权限检查相关的知识,希望对你有一定的参考价值。
权限检查
MongoDB用户权限分配的操作是针对某个库来说的。--这句话很重要。
Built-In Roles(内置角色):
1. 数据库用户角色:read、readWrite;
2. 数据库管理角色:dbAdmin、dbOwner、userAdmin;
3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
4. 备份恢复角色:backup、restore;
5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
6. 超级用户角色:root
// 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
7. 内部角色:__system
默认不开启权限检查。关闭与开启切换服务重启服务。
Windows下开启
默认安装。
创建用户管理帐号。
# mongo
db.createUser(
{
user: "root",
pwd: "root",
roles: [ { role: "root", db: "admin" } ]
}
)
停止服务。
管理员运行cmd,卸载服务。
C:MongoDBServer3.6in>mongod --remove
2018-08-06T09:38:01.000+0800 I CONTROL [main] Trying to remove Windows service
‘MongoDB‘
2018-08-06T09:38:01.002+0800 I CONTROL [main] Service ‘MongoDB‘ removed
重新安装,添加 --auth选项。
>mongod --install --logpath C:MongoDBServer3.6datalogmongo.log --dbpath C:MongoDBServer3.6datadb –auth
启动服务。
登陆mongo,通过所建用户管理帐号工作。
注意,如果首次安装就添加 --auth选项,那啥也干不了...
Ubuntu下开启
# vim /etc/mongodb.conf
auth = true # 注释即为关闭权限检查。
# service mongodb restart # 打开或关闭权限检查需要重启服务。
创建用户、删除用户、查看用户、验证用户。
db.createUser({
user: "",
pwd: "",
roles: [
{ role: "", db: "" }, ...
]
})
db.system.users.find().pretty();
use db1;
show users;
db.system.users.remove({user:""});
use admin;
db.auth("user","pwd");
实例:神、所有数据库用户管理、所有数据库读、所有数据库读写、某个数据库读、某个数据库读写。
关闭检查。
# service mongodb restart
# mongo
db.createUser(
{
user: "root",
pwd: "1",
roles: [ { role: "root", db: "admin" } ]
}
)
db.createUser(
{
user: "manageruser",
pwd: "1",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
db.createUser(
{
user: "readall",
pwd: "1",
roles: [ { role: "readAnyDatabase", db: "admin" } ]
}
)
db.createUser(
{
user: "readwall",
pwd: "1",
roles: [ { role: "readWriteAnyDatabase", db: "admin" } ]
}
)
db.createUser(
{
user: "db1r",
pwd: "1",
roles: [ { role: "read", db: "db1" } ]
}
)
db.createUser(
{
user: "db1rw",
pwd: "1",
roles: [ { role: "readWrite", db: "db1" } ]
}
)
打开检查。
测试。注意,切换用户需要use admin;操作数据库需要use 目标数据库;
以上是关于Mongo 权限检查的主要内容,如果未能解决你的问题,请参考以下文章
Mongo - 如何找出我连接的用户的角色?如何为用户分配完全读写访问权限?