Mongodb 集群启用密码验证1.md

简介

  • 以及公司对安全重视,增加用户密码登录
  • 对于搭建好的mongodb副本集加分片集群,为了安全,启动安全认证,使用账号密码登录。
  • 默认的mongodb是不设置认证的。只要ip和端口正确就能连接,这样是不安全的。

具体操作

第一步关键 创建拥有添加删除用户权限的帐号
  • 创建用户,需要在分片上和对应mongos还有config的主节点上面
登录到mongos切换到admin库,如果不切换默认是在test库,会导致程序无法连接到mongodb 切记

db.createUser({
 user:"useradmin",
 pwd:"test110",
 roles: [ { role: "root",db:"admin"}]
}) 

db.auth("useradmin","test110")//认证该用户

开启分片集群权限验证
  • 首先生成一个添加keyFile文件----->用于认证使用

  • 1.在分片集群环境中,副本集内成员之间需要用keyFile认证,mongos与配置服务器,副本集之间也要keyFile认证,集群所有mongod和mongos实例使用内容相同的keyFile文件。

  • 2.进行初始化,修改副本集时,都从本地例外登录进行操作

  • 3.由于启用了认证,需要建立一个管理员帐号,才能从远程登录。建立管理员帐户,利用管理员账户从远程登录后,需要建立一个可以操作某个数据库的用户,客户端就用这个用户访问数据库。

  • 4.分片集群中的管理员帐号需要具备配置服务器中admin和config数据库的读写权限,才能进行分片相关操作

  • 5.集群中每个分片有自己的admin数据库,存储了集群的各自的证书和访问权限。如果需要单独远程登录分片,可以按照3.2的办法建立用户

  • 操作步骤

openssl rand -base64  test110 > ./keyFile.key
chmod 600 ./keyFile.key   #权限必须是600
scp ./keyFile.key   #到对应的在分片和Configserver的config配置文件路径下

  • Shard和Configserver配置文件添加相关配置信息
#开启权限验证
auth=true
keyFile=/home/mongodb/config/keyFile.key
  • mongos配置文件中添加如下配置
#指向keyFile
keyFile=/usr/local/mongodb/key/keyFile.key

  • 快速添加
echo "keyFile=/home/mongodb/config/keyFile.key"  >>  config*
echo "keyFile=/home/mongodb/config/keyFile.key"  >>  mongos*
echo "keyFile=/home/mongodb/config/keyFile.key"  >>  shard1*
echo "keyFile=/home/mongodb/config/keyFile.key"  >>  shard2*
echo "keyFile=/home/mongodb/config/keyFile.key"  >>  shard3*

echo "auth=true"  >>  config*
echo "auth=true"  >>  shard1*
echo "auth=true"  >>  shard2*
echo "auth=true"  >>  shard3*
测试登录
  • 测试
mongo 192.168.128.10 -u admin -p test110

  • 对应的业务程序升级增加配置配置用户名和密码,并验证业务是否正常。
还原回退操作
  • 把如下配置还原

Shard和Configserver配置文件取消添加相关配置信息
#开启权限验证
auth=true
keyFile=/home/mongodb/config/keyFile.key

mongos配置文件中添加取消如下配置
#指向keyFile
keyFile=/usr/local/mongodb/key/keyFile.key

  • 快速回退
sed -i '/keyFile/d'    config*
sed -i '/keyFile/d'    mongos*
sed -i '/keyFile/d'    shard1*
sed -i '/keyFile/d'    shard2*
sed -i '/keyFile/d'    shard3*
sed -i '/auth=true/d'   config*
sed -i '/auth=true/d'   mongos*
sed -i '/auth=true/d'   shard1*
sed -i '/auth=true/d'   shard2*
sed -i '/auth=true/d'   shard3*
  • 重启mongodb服务,验证功能是否正常。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容