MongoDB AUTH结果验证 - Oracle-fans - 博客园
- 创建超级管理员和普通用户
#创建超级管理员 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');
1.服务端查看当前用户
> 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两个用户的操作权限
2.未开启AUTH认证
2.1 super用户登录
新建数据库
ok
删除数据库
ok
2.1 gxpt用户登录
新建数据库
ok
删除数据库
ok
结论:未启用AUTH,普通用户可以对任何数据库做 新增、删除操作!!!
3. 开启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
3.1 super用户登录
super用户对gxpt数据库创建collection
ok
super用户对gxpt数据库创建collection
Ok
3.2 readwrite用户登录
readwrite 只对gxpt数据库有读写权限,因此可以正常 创建、删除collection
对于其他数据库没有读写权限!!!因此其他数据库不可见
借用客户端对其他库创建collection 报错:未经过认证
结论:启用AUTH之后,普通用户只对所属的数据库有操作权限。