标签:real chmod base 功能 min bit readwrite 状态 open
最近在部署MongoDB Replica Set,马上就到生产环境了,一想还没有给数据库设置用户权限,配置的这一路踩了好多坑,希望对大家有帮助
#下载地址: https://www.mongodb.com/download-center?jmp=nav#community 下载后直接解压,安装rpm包 启动命令: mongod -f /home/root/mongoconf/mongodb_master.conf #master.conf dbpath=/home/root/mongodata/master logpath=/home/root/mongolog/master.log pidfilepath=/opt/mongodb/master.pid #keyFile=/opt/mongodb/mongodb.key directoryperdb=true logappend=true replSet=bbt bind_ip= <ip> port=27017 #auth=true oplogSize=100 fork=true noprealloc=true #maxConns=4000 #arbiter.conf 仲裁配置 和主机在一个服务器 dbpath=/home/root/mongodata/arbiter logpath=/home/root/mongolog/arbiter.log pidfilepath=/opt/mongodb/arbiter.pid #keyFile=/opt/mongodb/mongodb.key directoryperdb=true logappend=true replSet=bbt bind_ip=<ip> port=27019 #auth=true oplogSize=100 fork=true noprealloc=true #maxConns=4000 #slave.conf dbpath=/home/root/mongodata/slave logpath=/home/root/mongolog/slave.log pidfilepath=/opt/mongodb/slave.pid #keyFile=/opt/mongodb/mongodb.key directoryperdb=true logappend=true replSet=testdb bind_ip=<ip2> port=27017 #auth=true oplogSize=100 fork=true noprealloc=true #maxConns=4000
启动后可任意找一个结点登录:
mongo 172.31.138.31:27017
执行以下命令配置集群:
cfg={ _id:"bbt", members:[ {_id:0,host:‘172.31.138.31:27017‘,priority:2}, {_id:1,host:‘172.31.138.30:27017‘,priority:1}, {_id:2,host:‘172.31.138.31:27019‘,arbiterOnly:true}] };
rs.initiate(cfg)
rs.status() #查看集群状态
由于前面配置好后所有结点的MongoDB服务都启动了,所以第二步先service mongod stop(所有结点都要停止服务) 注:这个命令不一定有效
此步骤可用
mongod -f /home/root/mongoconf/mongodb_master.conf --shutdown
1 use admin 2 #创建用户管理权限 3 db.createUser( 4 { user: "admin", 5 pwd: "admin", 6 roles: [{ role: "userAdminAnyDatabase", db: "admin" }] 7 } 8 9 10 use test 11 #创建用户操作权限(创建几个都可以) 12 db.createUser({ user: "userrwadmin", pwd: "userrw@hswj0424", roles: [{ role: "readWrite", db: "bbt" }]}) 13 db.createUser({ user: "userradmin", pwd: "userr@hswj0424", roles: [{ role: "read", db: "bbt" }]})
openssl rand -base64 741 > /home/root/mongodb-keyfile
chmod 600 /home/root/mongodb-keyfile
keyFile=/home/root/mongodb-keyfile
auth = true
这两个是两台认证的user 和 pwd use admin db.auth(‘bbtadmin‘,‘mongo@hswj0424‘) use bbt db.auth(‘userrwadmin‘,‘userrw@hswj0424‘) 也可以可以使用mongo 172.31.138.31:27017 -u ‘userrwadmin‘ -p ‘userrw@hswj0424‘ --authenticationDatabase ‘bbt‘ 去查看集合的内容 否则会报错——"too many users are authenticated"
9.总结
1. 给admin库添加用户名和密码时,只需要在一个结点上操作,只要配置好了replica set, 用户名和密码会同步到其他结点.
2. 关于用户名密码认证和结点之间认证.
前者是对于mongodb client而言,处于对每个库的安全考虑,client端想操作数据库,必须先用用户名和密码登录,即配置文件中的auth=true;
而对于节点之间的认证,其实跟前面用户名密码认证是分离的,是让各结点之间有一个key来保持通信,即数据的同步等,是对整个集群成员的安全进行考虑,避免其他用户给集群胡乱添加成员.即配置文件中的keyFile;
标签:real chmod base 功能 min bit readwrite 状态 open
原文地址:https://www.cnblogs.com/yuanfang0903/p/10833683.html