环境准备
名称 | 版本 |
---|
系统 | CentOS7.9 |
MongoDB | 5.0.0 |
1. 创建repo文件
cat >/etc/yum.repos.d/mongodb-org-5.0.repo<<EOF
[mongodb-org-5.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/5.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-5.0.asc
EOF
2. 安装
#安装5.0最新版
yum install -y mongodb-org
#安装指定版本(5.0.0)
yum install -y mongodb-org-5.0.0 mongodb-org-database-5.0.0 mongodb-org-server-5.0.0 mongodb-org-shell-5.0.0 mongodb-org-mongos-5.0.0 mongodb-org-tools-5.0.0
3. 修改配置文件
vim /etc/mongod.conf
bindIp: 127.0.0.1 <--将这里修改成本机的ip
#添加下面几行
replication:
replSetName: "rs0"
#security:
# authorization: enabled
# keyFile: /var/lib/mongo/ssh/keyfile
# clusterAuthMode: keyFile
setParameter:
enableLocalhostAuthBypass: false
4. 启动mongo
systemctl start mongod
5. 主节点初始化副本集
mongo
以下带 '>' 开头均在mongo中执行
5.1创建集群
>config = {
_id : "rs0",
members : [
{_id:0, host:"ip1:27017"},
{_id:1, host:"ip2:27017"},
{_id:2, host:"ip3:27017"},
]
}
5.2 初始化
> rs.initiate(config)
> rs.secondaryOk()
5.3 创建用户
>use admin
>db.createUser( { user: "root", pwd: "adminpasswd", roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ] } )
5.4 创建完成后退出再进入
mongo ip1:27017 --authenticationDatabase "admin" -u "root" -padminpasswd
5.5 创建用户user1,认证user1库
> use feiliks
> db.createUser( { user: "user1", pwd: "user1passwd", roles: [ { role: "readWrite", db: "user1" } ] } )
> db.getUsers()
> db.write.insertOne({"name":"readWrite"})
> show tables
5.6 验证库用户是否创建成功
mongo ip1:27017 --authenticationDatabase "user1" -u "user1" -puser1passwd
> db
> use user1
> show tables
6. 从节点认证
mongo
> rs.secondaryOk()
> use user1
> db.write.find()
7. 所有节点停止MongoDB
systemctl stop mongod
8. 创建证书
8.1 创建证书目录
mkdir /var/lib/mongo/ssh/
8.2 主节点创建证书
openssl rand -base64 90 -out /var/lib/mongo/ssh/keyfile
chown mongod.mongod /var/lib/mongo/ssh/keyfile
chmod 600 /var/lib/mongo/ssh/keyfile
8.3 将证书发送到从节点
scp keyfile root@ip2:/var/lib/mongo/ssh/
scp keyfile root@ip3:/var/lib/mongo/ssh/
8.4 在从节点修改keyfile权限
chown mongod.mongod /var/lib/mongo/ssh/keyfile
9. 修改配置文件并启动
#将原先加入的注释的配置文件取消注释
vi /etc/mongod.conf
security:
authorization: enabled
keyFile: /var/lib/mongo/ssh/keyfile
clusterAuthMode: keyFile
10. 启动MongoDB
#先启动主节点,再启动从节点
systemctl start mongod
11. 验证
mongo ip1:27017 --authenticationDatabase "admin" -u "root" -padminpasswd
mongo ip1:27017 --authenticationDatabase "user1" -u "user1" -puser1passwd
mongo ip2:27017 --authenticationDatabase "admin" -u "root" -padminpasswd
mongo ip2:27017 --authenticationDatabase "user1" -u "user1" -puser1passwd
mongo ip3:27017 --authenticationDatabase "admin" -u "root" -padminpasswd
mongo ip3:27017 --authenticationDatabase "user1" -u "user1" -puser1passwd