mongodb添加登录验证--分片环境

1 生成密钥文件

在keyfile身份验证中,副本集中的每个mongod实例都使用keyfile的内容作为共享密码,
只有具有正确密钥文件的mongod或者mongos实例可以连接到副本集。
密钥文件的内容必须在6到1024个字符之间,并且在unix/linux系统中文件所有者必须有对文件至少有读的权限。 #openssl rand -base64 756 > /home/mongodb/conf/keyfile #chmod 400 /home/mongodb/conf/keyfile 将keyflie文件传到其他服务器下的相应目录

2 修改配置文件

在每台的config server,shard1,shard2,shard3配置文件里都加入下面的配置:
security:
  keyFile: /home/mongodb/conf/keyfile
  authorization: enabled

每台机器上的mongos配置文件中加入下面一段配置:
keyFile =  /home/mongodb/conf/keyfile

         mongos比mongod少了authorization:enabled的配置。原因是,副本集加分片的安全认证需要配置两方面的,副本集各个节点之间使用内部身份验证,用于内部各个mongo实例的通信,只有相同keyfile才能相互访问。所以都要开启keyFile;

        然而对于所有的mongod,才是真正的保存数据的分片。mongos只做路由,不保存数据。所以所有的mongod开启访问数据的授权authorization:enabled。这样用户只有账号密码正确才能访问到数据。

3 新增管理用户并重启各实例

连接任意一台机器的mongos
#/home/mongodb/bin/mongo  192.168.1.223:20000
添加用户
>use admin //注意一定要使用admin数据库
>db.createUser(
{
user:"admin",
pwd:"admin",
roles:[{role:"root",db:"admin"}]
}
)

添加用户完成后,再重启各个mongodb实例;
账号密码:admin/admin

4 测试连接

#/home/mongodb/bin/mongo  192.168.1.223:20000
>show  dbs;     //此时无内容显示
>use admin
>db.auth("admin","admin")
>show dbs;        //密码验证后才能看到所有的库
或
#/home/mongodb/bin/mongo 192.168.1.223:20000 -u admin -p admin  --authenticationDatabase admin

大致流程:生成秘钥文件,分发到各个服务器上,修改各角色的配置文件,新增管理用户,重启各个角色,测试连接;

#用户管理和认证方法

官方详细文档:https://docs.mongodb.com/master/reference/security/#security-methods-in-the-mongo-shell

 

 

 -------------------------------------------------------------------------------------------------------------------

参考链接:

https://www.cnblogs.com/pl-boke/p/10064489.html

https://blog.csdn.net/welcome66/article/details/84916061

https://www.cnblogs.com/kevingrace/p/8184087.html

posted @ 2020-03-13 14:22  非然踏古忘今焉  阅读(665)  评论(0编辑  收藏  举报