mongodb的认证
单实例认证
systemLog:
destination: file
logAppend: true
path: /data/mongodb/27017/mongodb.log
storage:
dbPath: /data/mongodb/27017/
journal:
enabled: true
processManagement:
fork: true
net:
port: 27017
bindIp: 127.0.0.1
security: #这里有一个安全认证,启动
authorization: enabled
//启动之后是无法使用insert,因为没有认证
//创建用户名和密码
use admin
db.createUser({
user: "zhanghe",
pwd: "cba-123",
roles: [ { role: "root", db: "admin"}] #这里的root和admin的意思仅代表最高权限而已。
})
//想要插入,要先认证,认证的方法如下:
use admin
db.auth('zhanghe', 'cba-123')
//在终端登录的时候可以这样认证:
mongo -uzhanghe -pcba-123 --authenticationDatabase admin
副本集认证
副本集的认证开启
-
先副本集数据同步使用密钥,然后副本集搭建完成后再创建用户用来做认证
-
openssl rand -base64 756 > /data/mongodb/zhanghe.key
-
chmod 700 /data/mongodb/zhanghe.key
同步的时候使用密钥,我们使用的时候,也就是用户认证的时候还是要创建用户做认证
所有的服务器都要有密钥,不然也无法同步
Mongodb副本集配置文件mongodb.conf
systemLog:
destination: file
logAppend: true
path: /data/mongodb/27017/mongodb.log
storage:
dbPath: /data/mongodb/27017/
journal:
enabled: true
processManagement:
fork: true
net:
port: 27017
bindIp: 127.0.0.1
replication:
replSetName: zhanghe
security:
keyFile: /data/mongodb/zhanghe.key
authorization: enabled
//启动三个Mongodb服务器
mongod -f /data/mongodb/27017/mongodb.conf
mongod -f /data/mongodb/27018/mongodb.conf
mongod -f /data/mongodb/27019/mongodb.conf
副本集初始化:
use admin
config = { _id:"zhanghe", members:[
{_id:0,host:"127.0.0.1:27017"},
{_id:1,host:"127.0.0.1:27018"},
{_id:2,host:"127.0.0.1:27019"}]
}
rs.initiate( config )
rs.status()
副本集设置认证,登录到primary,运行以下命令创建用户:
use admin
db.createUser({
user: "zhanghe",
pwd: "cba-123",
roles: [ { role: "root", db: "admin"}]
})
测试副本集的数据同步:
use zhanghe
db.user.insert({ name: "zhanghe" })
rs.slaveOk()
rs.printSlaveReplicationInfo()
分片集群认证
注意点:
router不需要配置认证,得配置keyFile
configsvr需要配置认证
sharedsvr需要配置认证
过程略过,详情请见上一篇博客,此处不再赘述……