ubuntu

如何在Ubuntu上配置MongoDB的副本集认证

小樊
39
2025-08-03 17:45:02
栏目: 云计算

在Ubuntu上配置MongoDB的副本集认证需要以下几个步骤:

1. 安装MongoDB

首先,确保你已经在Ubuntu上安装了MongoDB。如果没有安装,可以使用以下命令进行安装:

sudo apt update
sudo apt install -y mongodb

2. 配置MongoDB实例

编辑MongoDB的配置文件 /etc/mongod.conf,为每个实例添加认证相关的配置。

实例1:主节点(Primary)

storage:
  dbPath: /var/lib/mongodb
  journal:
    enabled: true

systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

net:
  port: 27017
  bindIp: 127.0.0.1,你的主节点IP

security:
  authorization: enabled

实例2:从节点(Secondary)

storage:
  dbPath: /var/lib/mongodb
  journal:
    enabled: true

systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

net:
  port: 27018
  bindIp: 127.0.0.1,你的从节点IP

security:
  authorization: enabled

3. 创建管理员用户

启动MongoDB实例后,创建一个管理员用户用于认证。

连接到MongoDB

mongo --port 27017

创建管理员用户

use admin
db.createUser({
  user: "admin",
  pwd: "your_password",
  roles: ["root"]
})

4. 配置副本集

在每个MongoDB实例上执行以下命令来初始化副本集。

连接到主节点

mongo --port 27017 -u admin -p your_password --authenticationDatabase admin

初始化副本集

rs.initiate({
  _id: "myReplSet",
  members: [
    { _id: 0, host: "主节点IP:27017", priority: 2 },
    { _id: 1, host: "从节点IP:27018", priority: 1 }
  ]
})

5. 验证副本集状态

在主节点上执行以下命令来验证副本集的状态:

rs.status()

6. 配置副本集成员的认证

确保每个副本集成员都使用相同的管理员用户进行认证。

连接到从节点

mongo --port 27018 -u admin -p your_password --authenticationDatabase admin

验证从节点状态

rs.status()

7. 配置MongoDB客户端连接

在应用程序中配置MongoDB客户端连接时,需要提供用户名和密码。

例如,在Python中使用pymongo库:

from pymongo import MongoClient

client = MongoClient(
    host="主节点IP:27017,从节点IP:27018",
    username="admin",
    password="your_password",
    authSource="admin"
)

db = client.your_database

通过以上步骤,你就可以在Ubuntu上配置MongoDB的副本集认证。确保每个实例都正确配置了认证,并且副本集成员之间可以正常通信。

0
看了该问题的人还看了