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
 
                     
                    
                 
                    
                
 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号