mongodb

【MongoDB】一键搭建 MongoDB 3.4.9 复制集

2024-05-13  本文已影响0人  Bogon

为了确保MongoDB复制集的安全性,我们应该为它设置一个超管密码。

在初始化复制集时添加了设置超管密码的步骤:


#!/bin/bash

# 定义MongoDB版本和副本集名称

MONGO_VERSION="3.4.9"

REPLICA_SET_NAME="myReplicaSet"

# 定义副本集中的MongoDB服务器的主机名或IP地址

# 请替换以下IP地址或主机名为你的服务器的实际地址

MONGO_HOST1="mongodb1.example.com"

MONGO_HOST2="mongodb2.example.com"

MONGO_HOST3="mongodb3.example.com"

# MongoDB超管用户名和密码

MONGO_ADMIN_USER="admin"

MONGO_ADMIN_PASSWORD="yourStrongPassword"

# 安装MongoDB

echo "Installing MongoDB version $MONGO_VERSION..."

yum install -y mongodb-org-$MONGO_VERSION mongodb-org-server-$MONGO_VERSION mongodb-org-shell-$MONGO_VERSION --disablerepo=*

# 停止MongoDB服务

echo "Stopping MongoDB service..."

systemctl stop mongod

# 为每个MongoDB实例创建数据目录和日志目录

echo "Creating data and log directories..."

mkdir -p /data/db1 /data/db2 /data/db3

mkdir -p /var/log/mongodb1 /var/log/mongodb2 /var/log/mongodb3

# 为每个MongoDB实例配置mongod服务

echo "Configuring mongod services..."

cat <<EOF > /etc/systemd/system/mongod1.service

[Unit]

Description=MongoDB Server 1

After=network.target

[Service]

User=mongod

ExecStart=/usr/bin/mongod --replSet $REPLICA_SET_NAME --bindIp $MONGO_HOST1 --port 27017 --dbpath /data/db1 --logpath /var/log/mongodb1/mongod.log

Restart=always

RestartSec=5

[Install]

WantedBy=multi-user.target

EOF

cat <<EOF > /etc/systemd/system/mongod2.service

[Unit]

Description=MongoDB Server 2

After=network.target

[Service]

User=mongod

ExecStart=/usr/bin/mongod --replSet $REPLICA_SET_NAME --bindIp $MONGO_HOST2 --port 27017 --dbpath /data/db2 --logpath /var/log/mongodb2/mongod.log

Restart=always

RestartSec=5

[Install]

WantedBy=multi-user.target

EOF

cat <<EOF > /etc/systemd/system/mongod3.service

[Unit]

Description=MongoDB Server 3

After=network.target

[Service]

User=mongod

ExecStart=/usr/bin/mongod --replSet $REPLICA_SET_NAME --bindIp $MONGO_HOST3 --port 27017 --dbpath /data/db3 --logpath /var/log/mongodb3/mongod.log

Restart=always

RestartSec=5

[Install]

WantedBy=multi-user.target

EOF

# 设置适当的权限

chown -R mongod:mongod /data/db* /var/log/mongodb*

# 启动MongoDB服务

echo "Starting MongoDB services..."

systemctl daemon-reload

systemctl enable mongod1 mongod2 mongod3

systemctl start mongod1 mongod2 mongod3

# 初始化MongoDB复制集并设置超管用户

echo "Initializing MongoDB replica set and setting up admin user..."

mongo --host $MONGO_HOST1 --eval "rs.initiate({_id: '$REPLICA_SET_NAME', members: [{_id: 0, host: '$MONGO_HOST1:27017'}, {_id: 1, host: '$MONGO_HOST2:27017'}, {_id: 2, host: '$MONGO_HOST3:27017'}]}}"

# 确保复制集初始化完成

sleep 10

# 连接到MongoDB并添加超管用户

mongo --host $MONGO_HOST1 --eval "db.createUser({user: '$MONGO_ADMIN_USER', pwd: '$MONGO_ADMIN_PASSWORD', roles: [{role: 'root', db: 'admin'}]});"

echo "MongoDB replica set with version $MONGO_VERSION and admin user has been successfully set up!"

在这个脚本中,我们定义了一个MONGO_ADMIN_USERMONGO_ADMIN_PASSWORD变量来存储超管的用户名和密码。在初始化复制集之后,我们使用mongo命令行工具连接到MongoDB实例,并创建了一个具有root角色的用户。

请确保替换MONGO_ADMIN_PASSWORD为你自己的强密码,并在运行脚本之前确保所有主机名或IP地址都是正确的。

在运行此脚本之前,你需要确保MongoDB的相应版本已经在你的服务器上可用,或者你需要修改yum安装命令中的版本号以匹配你的实际情况。

运行脚本后,MongoDB复制集将被设置,并创建了一个具有root角色的超管用户,你可以使用这个用户来管理你的MongoDB实例。

上一篇下一篇

猜你喜欢

热点阅读