如何用Python初始化MongoDB副本集并创建首个管理员用户?
如何通过PyMongo直接创建MongoDB副本集的首个管理员用户
当然可以直接通过PyMongo创建首个管理员用户啦!不需要先在Mongo Shell里操作,只要你的副本集当前处于未开启认证的状态(毕竟还没管理员用户),就可以按照下面的步骤来:
步骤1:连接到副本集主节点
首先用PyMongo建立副本集连接,记得替换成你的节点地址和副本集名称:
import pymongo # 替换为实际的副本集节点IP/端口和副本集名称 client = pymongo.MongoClient( 'mongodb://node1:27017,node2:27017/?replicaSet=your_replica_set_name' )
如果你不确定哪个节点是主节点,可以执行以下命令确认:
is_master = client.admin.command('isMaster') print(f"当前主节点地址: {is_master['primary']}")
步骤2:创建管理员用户
管理员用户需要创建在admin数据库下,使用create_user方法即可,你可以根据需求选择合适的角色:
# 切换到admin数据库 admin_db = client.admin # 创建超级管理员(拥有最高权限) admin_db.create_user( username='admin_root', password='YourSecurePassword_123', # 务必使用强密码 roles=[{'role': 'root', 'db': 'admin'}] )
如果只需要该用户拥有管理所有数据库用户的权限,也可以把角色换成userAdminAnyDatabase:
roles=[{'role': 'userAdminAnyDatabase', 'db': 'admin'}]
这个create_user方法和Mongo Shell里的db.createUser()逻辑完全一致,效果是一样的。
步骤3:开启认证后的连接方式
创建完管理员用户后,后续再连接副本集就需要携带认证信息了:
# 带认证的副本集连接 authenticated_client = pymongo.MongoClient( 'mongodb://admin_root:YourSecurePassword_123@node1:27017,node2:27017/?replicaSet=your_replica_set_name' )
注意事项
- 必须在主节点上执行创建用户的操作,因为副本集的写操作只能在主节点进行,PyMongo一般会自动路由到主节点,但手动确认更稳妥。
- 密码要符合MongoDB的密码复杂度要求,避免使用弱密码,降低安全风险。
内容的提问来源于stack exchange,提问作者Yang
相关产品推荐
相关产品推荐

