mongo副本集权限配置(centos7)

上一章配置完副本集后,紧接着继续配置数据库权限。链接直通车:https://blog.csdn.net/liubo_2016/article/details/91871268

开启安全认证

创建用户

登录 PRIMARY节点创建用户,在此我们对 test 库开启安全认证。

先创建全局管理员用户:db.createUser({user:"root",pwd:"ygW_2019",roles:[{role:"userAdminAnyDatabase",db:"admin"}]})

mongo副本集权限配置(centos7)_第1张图片

然后创建测试库读写权限用户: db.createUser({ user: "admin",pwd: "ygW_2019",roles: [{role: "readWrite",db: "test"}]})

mongo副本集权限配置(centos7)_第2张图片

创建keyFile文件
先停掉所有SECONDARY节点的MongoDB服务,然后再停掉PRIMARY节点的MongoDB服务,并在PRIMARY节点所在服务器上创建keyFile文件。(注:如果mongo服务器没有安装openssl,需要先安装:yum install openssl

)

 指令如下: mongod --shutwodn --dbpath /usr/local/mongodb-4.0.2/data

                 openssl rand -base64 666 > /usr/local/mongodb-4.0.2/keyfile

mongo副本集权限配置(centos7)_第3张图片
将生成的keyFile文件拷贝到其他节点服务器上,并修改文件的操作权限为 600。

 指令:  chmod 600 /usr/local/mongodb-4.0.2/keyfile   

 如下图:

mongo副本集权限配置(centos7)_第4张图片

更新启动配置文件
修改PRIMARY节点(10.1.1.68)的 mongodb.conf 文件,增加如下内容:

# Add auth Config
auth=true
oplogSize=100
keyFile=/usr/local/mongodb-4.0.2/keyfile


修改SECONDARY节点(10.1.1.69,10.1.1.70)的 mongodb.conf 文件,增加如下内容:

# Add auth Config
oplogSize=100
keyFile=/usr/local/mongodb-4.0.2/keyfile
 
启动副本集
先以 --auth 方式启动PRIMARY节点:   mongod -f /usr/local/mongodb-4.0.2/mongodb.conf

mongo副本集权限配置(centos7)_第5张图片

再启动SECONDARY节点:

mongod -f /usr/local/mongodb-4.0.2/mongodb.conf

登录测试

  mongo -uadmin -pygW_2019 10.1.1.68:27017   --- 如下图:

mongo副本集权限配置(centos7)_第6张图片
admin用户只能看到test库。 

但是问题来了,这时候再去查看副本集的状态,提示权限不足:

mongo副本集权限配置(centos7)_第7张图片

因为之前创建root用户时,只给了角色dbAdminAnyDatabase权限,所以在操作rs.config(),rs.status()时,提示没有权限操作;

帐号是跟着库走的,所以在指定库里授权,必须也在指定库里验证(auth)

我们只需给root重新赋权就好了,

db.updateUser("root", {
    pwd: "ygW_2019",
    roles: [{
            role: "dbOwner",
            db: "admin"
        }, {
            role: "clusterAdmin",
            db: "admin"
        }, {
            role: "userAdminAnyDatabase",
            db: "admin"
        }, {
            role: "dbAdminAnyDatabase",
            db: "admin"
        }, {
            role: "root",
            db: "admin"
        }

    ]
})

如下图:

mongo副本集权限配置(centos7)_第8张图片

然后我们在查看副本集状态:rs.status(),可以看到了,如下图:

mongo副本集权限配置(centos7)_第9张图片

你可能感兴趣的:(java,数据库,mongodb)