文章插图
这里,我们采用第一种,即Keyfile的方式 。
Step1.在master节点上通过openssl生成Keyfile:
mkdir /usr/local/mongodb/certscd /usr/local/mongodb/certsopenssl rand -base64 756 > mongo-repl-set.keychmod 400 mongo-repl-set.key
Step2.将这个Keyfile复制到两个slave节点上,文件目录的组织可以保持一致 。Step3.分别修改各个节点的mongodb.conf,添加security的配置:
systemLog:destination: filepath: /usr/local/mongodb/logs/mongodb.log # log pathlogAppend: truestorage:dbPath: /usr/local/mongodb/data # data directorynet:bindIp: 0.0.0.0port: 27017 # portsecurity:#authorization: enabledkeyFile: /usr/local/mongodb/certs/mongo-repl-set.keyreplication:replSetName: localrsprocessManagement: fork: true
然后,重新启动这个复制集集群中的三个节点 。创建认证用户
首先,MongoDB规定,创建的第一个用户一定要在admin数据库,并且角色是 userAdminAnyDatabase 。
use admindb.createUser({user:"admin",pwd:"yourpassword",roles:[{role:"userAdminAnyDatabase",db:"admin"}]})
创建完第一个用户,就可以用这个用户登录并创建其他角色的用户了 。其次,创建一个集群的admin用户:
use admindb.auth("admin","yourpassword")db.createUser({user:"replicasAdmin",pwd:"yourpassword",roles:[{role:"clusterAdmin",db:"admin"}]})
这时,你就可以用这个replicasAdmin用户作为你的复制集的使用账号了 。对于生产环境,你还需要自定义一些角色并生成对应用户来控制访问权限,例如下面的授权:
db.createRole({role: 'sampleRole',privileges: [{resource: {db: 'sampledb', collection: 'sample'},actions: ["update"]}],roles: [{role: 'read',db: 'sampledb'}]})db.createUser({user: 'sampleUser',pwd: 'password',roles: [{role: 'sampleRole', db: 'admin'}]}
最后,你也可以创建一个root用户,和Linux系统一样,这是一个超级用户账号:use admindb.auth("admin","yourpassword")db.createUser({user:"root",pwd:"yourpassword",roles:[{role:"root",db:"admin"}]})
当然,由于这个账号权限太大,不建议分给应用程序层面(比如.NET或Java应用)进行联接使用 。重启复制集集群
将三个节点的mongodb.conf中的 security.authorization:true 的注释去掉,重启复制集:
......security:authorization: enabledkeyFile: /usr/local/mongodb/certs/mongo-repl-set.key......
总结本文介绍了如何通过Mongo Tools实现数据恢复 和 提高安全性的一些实践 。下一篇,我们会学习MongoDB的基本操作和查询 。
参考资料唐建法,《MongoDB高手课》(极客时间)
郭远威,《MongoDB实战指南》(图书)
以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!
「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助:- mongodb是nosql数据库吗 2 NoSQL | MongoDB入门实战教程
- mongodb是nosql数据库吗 4 NoSQL | MongoDB入门实战教程
- mongodb是nosql数据库吗 5 NoSQL | MongoDB入门实战教程
- mongodb是nosql数据库吗 6 NoSQL | MongoDB入门实战教程
- mongodb是nosql数据库吗 7 NoSQL | MongoDB入门实战教程
- mongodb是nosql数据库吗 8 NoSQL | MongoDB入门实战教程
- mongodb是nosql数据库吗 9 NoSQL | MongoDB入门实战教程
- mongodb是nosql数据库吗 11 NoSQL | MongoDB入门实战教程
- mongodb是nosql数据库吗 12 NoSQL | MongoDB入门实战教程
- mongodb是nosql数据库吗 13 NoSQL | MongoDB入门实战教程