首页 / GO / MongoDb分片集群认证
MongoDb分片集群认证
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MongoDb分片集群认证,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3242字,纯文字阅读大概需要5分钟。
内容图文
本文主要基于已经搭建好的未认证集群,结合上篇Mongodb副本集分片集群模式环境部署(https://www.cnblogs.com/woxingwoxue/p/9875878.html), MongoDb分片集群认证几个主要流程
1.在分片集群环境中,副本集内成员之间需要用keyFile认证,mongos与配置服务器,副本集之间也要keyFile认证,集群所有mongod和mongos实例使用内容相同的keyFile文件
(1)在其中一台机器上生成keyfile
openssl rand -base64 753 > keyfile sudochmod400 keyfile
(2)将keyfile放置在<path-to-keyfilie>路径
2.建立管理员账号,赋所有权限(admin和config数据库)
use admin db.createUser({user: " admin ",pwd: "123456",roles: [ { role: "root", db: "admin" } ]}) #root所有权限 db.auth("admin","123456") use config db.createUser({user: "admin",pwd: "123456",roles: [ { role: "root", db: "admin" } ]}) #root所有权限 db.auth("admin","123456")
3.关闭所有mongod、mongos、configsvr,编辑配置文件,重新启动每台服务器每个实例
为每一个mongod、mongos、配置服务器的实例其中的配置文件添加认证属性或者在启动实例时添加--authorization、--keyFile选项
[mongo@mongo3 ~]$ vi services/configsvr/mongod.conf
#mongod.conf 添加以下配置
security:
authorization: enabled #若启动实例报错,可删除该行
keyFile: /home/mongo/services/keyfile
[mongo@mongo3 ~]$ ./mongod -f services/configsvr/mongod.conf
其他实例如下
[mongo@mongo3 ~]$ vi services/shard1/mongod.conf #mongod.conf 添加以下配置 security: authorization: enabled #若启动实例报错,可删除该行 keyFile: /home/mongo/services/keyfile [mongo@mongo3 ~]$ ./mongod -f services/shard1/mongod.conf [mongo@mongo1 ~]$ vi services/shard2/mongod.conf #mongod.conf 添加以下配置 security: authorization: enabled #若启动实例报错,可删除该行 keyFile: /home/mongo/services/keyfile [mongo@mongo1 ~]$ ./mongod -f services/shard2/mongod.conf [mongo@mongo1 ~]$ vi services/shard3/mongod.conf #mongod.conf 添加以下配置 security: authorization: enabled #若启动实例报错,可删除该行 keyFile: /home/mongo/services/keyfile [mongo@mongo1 ~]$ ./mongod -f services/shard3/mongod.conf [mongo@mongo2 ~]$ vi services/mongos/mongos.conf #mongod.conf 添加以下配置 security: authorization: enabled #若启动实例报错,可删除该行 keyFile: /home/mongo/services/keyfile [mongo@mongo2 ~]$ ./mongos -f services/mongos/mongos.conf
4.admin连接mongo集群
[mongo@mongo3 ~]$ ./mongo 172.16.0.192:27017/admin -u admin -p 123456
5.为指定数据库添加访问用户,本文为testShard数据库
use testShard db.createUser( { user: " test " , pwd:"test", roles:[ {role:"readWrite", db:"testShard"} #读写权限 ] } ) db.auth("test","test")
6.test访问mongo集群,只有testShard的数据读写权限
[mongo@mongo3 ~]$ ./mongo 172.16.0.192:27017/testShard -u test -p test MongoDB shell version v4.0.3 connecting to: mongodb://172.16.0.192:27017/testShard Implicit session: session { "id" : UUID("e0f8bf3f-83d7-432c-ba4c-c063d865380e") } MongoDB server version: 4.0.3
用户和角色方法
详细参见官方文档:
https://docs.mongodb.com/manual/reference/method/#role-management
查看角色信息
use admin
db.getRole("rolename",{showPrivileges:true})
删除角色
use admin
db.dropRole("rolename")
系统内置用户角色
大部分内置的角色对所有数据库共用,少部分仅对admin生效
数据库用户类
read
非系统集合有查询权限
readWrite
非系统集合有查询和修改权限
数据库管理类
dbAdmin
数据库管理相关,比如索引管理,schema管理,统计收集等,不包括用户和角色管理
dbOwner
提供数据库管理,读写权限,用户和角色管理相关功能
userAdmin
提供数据库用户和角色管理相关功能
集群管理类
clusterAdmin
提供最大集群管理权限
clusterManager
提供集群管理和监控权限
clusterMonitor
提供对监控工具只读权限
hostManager
提供监控和管理severs权限
备份和恢复类
backup
提供数据库备份权限
restore
提供数据恢复权限
All-Database类
readAnyDatabase
提供读取所有数据库的权限除了local和config数据库之外
readWriteAnyDatabase
和readAnyDatabase一样,除了增加了写权限
userAdminAnyDatabase
管理用户所有数据库权限,单个数据库权限和userAdmin角色一样
dbAdminAnyDatabase
提供所有用户管理权限,除了local,config
超级用户类
root
数据库所有权限
内部角色
__system
提供数据库所有对象任何操作的权限,不能分配给用户,非常危险
原文:https://www.cnblogs.com/woxingwoxue/p/9888897.html
内容总结
以上是互联网集市为您收集整理的MongoDb分片集群认证全部内容,希望文章能够帮你解决MongoDb分片集群认证所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。