mongodb是nosql数据库吗 3 NoSQL | MongoDB入门实战教程( 二 )


mongodb是nosql数据库吗 3 NoSQL | MongoDB入门实战教程

文章插图
这里,我们采用第一种,即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.keyStep2.将这个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小编还为您精选了以下内容,希望对您有所帮助: