创建超级管理员和普通用户
#创建超级管理员 super
db.createUser(
{ user: "super",
pwd: "super",
roles: [ { role: "dbAdminAnyDatabase", db: "admin" } ]
}
);
#创建读写管理员 gxpt
db.createUser(
{ user: "gxpt",
pwd: "gxpt ",
roles: [ { role: "readWriteAnyDatabase", db: "gxpt" } ]
}
);
必须在启用AUTH之前认证用户
> db.auth('super', 'super');
> db.auth('gxpt', 'gxpt');
> show users;
{
"_id" : "admin.readWrite",
"user" : "readWrite",
"db" : "admin",
"roles" : [
{
"role" : "readWrite",
"db" : "gxpt"
}
],
"mechanisms" : [
"SCRAM-SHA-1"
]
}
{
"_id" : "admin.super",
"user" : "super",
"db" : "admin",
"roles" : [
{
"role" : "dbAdminAnyDatabase",
"db" : "admin"
}
],
"mechanisms" : [
"SCRAM-SHA-1"
]
}
}用户权限如下
用户
权限
身份
super
dbAdminAnyDatabase
超级管理员
gxpt
readWrite
普通用户
分别比较super 和gxpt两个用户的操作权限
新建数据库
ok
删除数据库
ok
新建数据库
ok
删除数据库
ok
结论:未启用AUTH,普通用户可以对任何数据库做 新增、删除操作!!!
需要在未启用AUTH的情况下对 admin 和 gxpt启用认证。
> db.auth("admin","admin");
1
> db.auth("gxpt","gxpt");
1
返回1 表明操作正常
[root@Mongodb237 mongodb]# mongo -usuper -psuper 127.0.0.1/admin
MongoDB shell version v4.0.0
connecting to: mongodb://127.0.0.1:27017/admin
MongoDB server version: 4.0.0
> db;db;
admin
> show dbs;show dbs;
admin 0.000GB
gxpt 0.000GB
local 0.000GB
ok
super用户对gxpt数据库创建collection
ok
super用户对gxpt数据库创建collection
Ok
readwrite 只对gxpt数据库有读写权限,因此可以正常 创建、删除collection
对于其他数据库没有读写权限!!!因此其他数据库不可见
借用客户端对其他库创建collection 报错:未经过认证
结论:启用AUTH之后,普通用户只对所属的数据库有操作权限。
转载于:https://www.cnblogs.com/iyoume2008/p/9884963.html