MongoDB AUTH结果验证及开启方法 - Oracle-fans - 博客园

  1. 创建超级管理员(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 则执行成功

  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

普通用户

  1. 未开启AUTH认证

    1. root用户登录

新建数据库

ok

删除数据库

ok

    1. gxpt用户登录

新建数据库

ok

删除数据库

ok

结论:未启用AUTH,普通用户可以对任何数据库做 创建、删除操作!!!

因此为了规避不规范操作,必须开始Mongo的AUTH认证

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

  1. 生成秘钥文件

[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/

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

。。。

keyFile=/opt/var/data/mongodb/mongodb.key

auth=true

。。。

请放开以上参数

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

[root@MongoDB236 ~]# service mongodb stop

[root@MongoDB236 ~]# service mongodb start

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

MongoDB server version: 4.0.0

> db;db;

admin

> show dbs;show dbs;

admin  0.000GB

gxpt   0.000GB

local  0.000GB

ok

    1. root用户登录

super用户对gxpt数据库创建collection

ok

super用户对gxpt数据库创建collection

Ok

    1. gxpt用户登录

gxpt只对gxpt数据库有读写权限,因此可以正常 创建、删除collection

对于其他数据库没有读写权限!!!因此其他数据库不可见

借用客户端对其他库创建collection 报错:未经过认证

结论:启用AUTH之后,普通用户只对所属的数据库有操作权限。

创建时间:2021-09-15 18:12
浏览量:0