MongoDB自学记录【四】----->mongodb分片集群添加用户权限

MongoDB默认是没有用户权限验证的,所以我们需要手动去添加用户,以便可以更加安全的进行访问,在没添加用户验证之前,通过mongos进入数据库时会有如下的警告:

image.png

4.1 首先建立一个拥有添加删除用户权限的账号

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


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

这里就添加了一个useradmin这么一个用户,他可以进行所有数据库的用户管理。在添加这个用户后,我们连接mongodb时仍然不需要进行登录,这是因为我们未在配置中开启权限验证。

4.2.开启分片集群的权限验证

4.2.1 首先生成一个添加keyFile文件----->用于认证使用

一个合理的keyFile应该满足下面的条件:

1.在分片集群环境中,副本集内成员之间需要用keyFile认证,mongos与配置服务器,副本集之间也要keyFile认证,集群所有mongod和mongos实例使用内容相同的keyFile文件。
2.进行初始化,修改副本集时,都从本地例外登录进行操作
3.由于启用了认证,需要建立一个管理员帐号,才能从远程登录。建立管理员帐户,利用管理员账户从远程登录后,需要建立一个可以操作某个数据库的用户,客户端就用这个用户访问数据库。
4.分片集群中的管理员帐号需要具备配置服务器中admin和config数据库的读写权限,才能进行分片相关操作
5.集群中每个分片有自己的admin数据库,存储了集群的各自的证书和访问权限。如果需要单独远程登录分片,也可以

openssl rand -base64 753

利用上述命令就可以生成一个满足条件的keyFile(如下图),然后将生成的code拷入到keyFile.key中:

cat  /usr/local/mongodb/key/keyFile.key

#然后要给该文件限定权限,必须是600
chmod 600  /usr/local/mongodb/key/keyFile.key
image.png

4.2.2 在各个分片以及configserver的配置文件中加上如下语句

#开启权限验证
auth=true
keyFile=/usr/local/mongodb/key/keyFile.key

4.2.3 在mongos配置文件中添加如下语句:

#指向keyFile
keyFile=/usr/local/mongodb/key/keyFile.key

4.3 启动程序

首先启动各个服务器中configserver

sudo mongod -f config.conf

然后启动各个分片

sudo mongod -f shard1.conf
sudo mongod -f shard2.conf
sudo mongod -f shard3.conf

最后启动mongos

sudo mongos -f mongos.conf

4.4.利用新组建账号登录集群

mongo ip:port/testdb -u username -p password

可以看到已经没有之前出现的警告了

image.png

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,908评论 18 139
  • 我侄儿: 2017年十一月二十五号,农历十月初八。爷爷奶奶出车祸了,爷爷过世。 匆匆忙忙赶回来还是没能见到你最后的...
    秦雍永昌阅读 349评论 0 0
  • 和孩子玩的时候,彻底的无忧无虑和开心,能量满满的,今天饭后散步边走边玩,很开心。感恩我的可爱宝贝!
    零贰O2阅读 216评论 0 0
  • 当你把决定权交到他人手上时,就必须接受最后的结果,这种不受控制的感觉是可悲的!所以绝对不能再次无能为力的让这...
    浅夏MJ阅读 134评论 0 0