增加认证
- 副本间认证
- 外部使用认证
如果是开启状态,先关闭路由,再关闭配置服务,最后关闭分片数据复本集中的每个mongod,从次节点开始。直到副本集的所 有成员都离线,包括任何仲裁者。主节点必须是最后一个成员关闭以避免潜在的回滚.最好通过 db.shutdownServer() 关闭数据库,防止后续启动时报错
//shutdown must run from localhost when running db without auth
//客户端登录服务,注意,这里通过localhost登录,如果需要远程登录,必须先登录认证才行。
mongo --port 27017
//#切换到admin库
use admin
//关闭服务
db.shutdownServer()
副本间认证
(在开启认证前,需要先创建超管用户)
use admin
db.createUser({user:"myroot",pwd:"123456",roles:["root"]})
副本集和共享集群的各个节点成员之间使用内部身份验证,可以使用密钥文件或x.509证书
1.证书产生
openssl rand -base64 150 > ./mongo.keyfile
# 赋予证书读权限
chmod 400 mongo.keyfile
2.将证书复制到所有的节点上,包括配置服务和路由
复制完成后,记得修改文件权限
# 赋予证书读权限
chmod 400 mongo.keyfile
3.修改配置文件
分片数据副本集和配置服务副本集上增加的配置
vim /use/local/mongodb/configs/mongodb.conf
security:
#KeyFile鉴权文件
keyFile: /use/local/mongodb/configs/mongo.keyfile
#开启认证方式运行
authorization: enabled
路由服务上增加的配置,路由服务不需要配置security.authorization
security:
#KeyFile鉴权文件
keyFile: /use/local/mongodb/configs/mongo.keyfile
4.重启集群
cd /use/local/mongodb
# 分片数据副本集和配置服务副本集
bin/mongod -f configs/mongodb.conf
# 路由服务
bin/mongos -f configs/mongodb.conf
tip:
- 重启时可能会遇到重启失败的情况,可能是应该异常关闭分片集群导致的,可以尝试删除data/db/mongod.lock文件
- 重启分片数据存储副本集时可能会遇到启动后一直卡着,没有返回success情况,此时通过看日志如果看到其中包含有**RSM monitoring host in expedited mode until we detect a primary",“attr”:{“host”:“#{ip:端口}”,“replicaSet”:“#{集群配置-replication.replSetName}”}}**错误,是因为集群没有完整的启动,接着启动集群的其他功能即可解决
登录认证
通过完善副本间认证后,启动服务,即可通过密码进行登录了
未使用密码登录会报错
mongodb://路由1:端口,路由2:端口
MongoServerError: Command hostInfo requires authentication
使用密码登录即可正确登录
mongodb://myroot:123456@路由1:端口,路由2:端口