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