MongoDB AUTH结果验证及开启方法

mac2022-06-30  145

 

创建超级管理员(root)和普通用户(gxpt)

#创建超级管理员(root) RS1:PRIMARY> use admin RS1:PRIMARY> db.createUser(    { user: "root",      pwd: "root",      roles: [ { role: "root", db: "admin" } ]    }  );    root用户所属admin数据库 RS1:PRIMARY>  db.auth('root', 'root'); 返回1 则执行成功 #创建普通用户(gxpt) #切换至gxpt数据库 RS1:PRIMARY>use gxpt RS1:PRIMARY>db.createUser(    { user: "gxpt",      pwd: "gxpt",      roles: [ { role: "readWrite", db: "gxpt" } ]    }  );  gxpt用户所属gxpt数据库 认证用户(gxpt) RS1:PRIMARY> db.auth("gxpt","gxpt"); 1 1返回1 则执行成功

服务端确认当前用户

RS1:PRIMARY> use admin;  switched to db admin RS1:PRIMARY> show users; {         "_id" : "admin.root",         "user" : "root",         "db" : "admin",         "roles" : [                 {                         "role" : "root",                         "db" : "admin"                 }         ],         "mechanisms" : [                 "SCRAM-SHA-1",                 "SCRAM-SHA-256"         ] } RS1:PRIMARY> use gxpt; switched to db gxpt RS1:PRIMARY> show users; {         "_id" : "gxpt.gxpt",         "user" : "gxpt",         "db" : "gxpt",         "roles" : [                 {                         "role" : "readWrite",                         "db" : "gxpt"                 }         ],         "mechanisms" : [                 "SCRAM-SHA-1",                 "SCRAM-SHA-256"         ] } }用户权限如下   用户   角色                       身份 root  root 超级管理员 gxpt readWrite 普通用户  

未开启AUTH认证

root用户登录

新建数据库 ok 删除数据库 ok

gxpt用户登录

新建数据库 ok 删除数据库 ok 结论:未启用AUTH,普通用户可以对任何数据库做 创建、删除操作!!! 因此为了规避不规范操作,必须开始Mongo的AUTH认证  

官方文档对于角色 <root>的描述

可见:角色<root>是涵盖 readWriteAnyDatabase, dbAdminAnyDatabase, userAdminAnyDatabase, clusterAdmin, restore, and backup等角色的超级角色  

生成秘钥文件

[root@MongoDB236 ~]# openssl rand -base64 100 > /opt/var/data/mongodb/mongodb.key [root@MongoDB236 ~]# chmod 600 /opt/var/data/mongodb/mongodb.key 请根据初始化参数文件指定该文件名称及目录 远程拷贝至其他节点 [root@MongoDB236 ~]# scp /opt/var/data/mongodb/mongodb.key 192.168.8.237:/opt/var/data/ [root@MongoDB236 ~]# scp /opt/var/data/mongodb/mongodb.key 192.168.8.238:/opt/var/data/  

修改初始化参数文件 xxxx.conf文件

。。。 keyFile=/opt/var/data/mongodb/mongodb.key auth=true 。。。 请放开以上参数

分别在三个节点重新启动MongoDB

[root@MongoDB236 ~]# service mongodb stop [root@MongoDB236 ~]# service mongodb start  

开启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    

root用户登录

super用户对gxpt数据库创建collection ok super用户对gxpt数据库创建collection Ok  

gxpt用户登录

gxpt只对gxpt数据库有读写权限,因此可以正常 创建、删除collection 对于其他数据库没有读写权限!!!因此其他数据库不可见 借用客户端对其他库创建collection 报错:未经过认证 结论:启用AUTH之后,普通用户只对所属的数据库有操作权限。  

转载于:https://www.cnblogs.com/iyoume2008/p/9896038.html

最新回复(0)