一、keyfile认证
1创建keyfile(秘钥文件)
1.1要求
(1)通过密钥文件进行身份验证时,副本集中的每个mongo实例都使用密钥文件的内容作为与其他成员进行身份验证的共享密码。
只有拥有正确密钥文件的Mongod实例才能加入副本集。
(2)密钥文件的内容必须在6到1024个字符之间,并且对于副本集的所有成员必须是相同的。
1.2创建
您可以使用您选择的任何方法生成密钥文件。例如,以下操作用于openssl生成用于密钥文件。
主要:key的长度必须是6-1024的base64字符,unix下必须相同组权限,windows下不需要。
1.3更改权限
chmod 600 ./mongodb.key
2将密钥文件复制到每个副本集成员上
将密钥文件复制到托管副本集成员的每个服务器上。确保运行mongod实例的用户是该文件的所有者,并且可以访问密钥文件。
scp name@xx.xx.xx.xx:XXX/mongodb.key /XXX
3登录到mongs 创建用户
Use admin一定要用admin数据库
db.createUser({user:"admin",pwd:"admin",roles:[{role:"userAdminAnyDatabase",db:"admin"}]})
4关闭分片加副本集的所有成员
5.在每个mongod的配置文件中添加以下内容:
auth=true
keyFile=XXX/mongodb.key
在每个mongos的配置文件中添加以下内容:
keyFile=XXX/mongodb.key
5.从新启动集群,启动顺序为
配置-->分片-->副本
备注:最好创建一个全局权限的账户,不然如果忘记了用户和密码就不太方便了。
二、附件
1.数据库角色
针对Mongodb数据库中的各种角色进行说明
数据库访问
角色名称 |
拥有权限 |
read |
允许读取指定数据库的角色 |
readWrite |
允许读写指定数据库的角色 |
数据库管理
角色名称 |
拥有权限 |
dbAdmin |
允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile |
userAdmin |
允许管理当前数据库的用户,如创建用户、为用户授权 |
dbOwner |
数据库拥有者(最高),集合了dbAdmin/userAdmin/readWrite角色权限 |
集群管理