- 首页 >
- 问答 >
-
云计算 >
- 如何在Ubuntu上管理MongoDB用户
如何在Ubuntu上管理MongoDB用户
小樊
32
2025-12-18 17:23:24
在 Ubuntu 上管理 MongoDB 用户
一 准备与启用身份验证
- 安装并启动 MongoDB(如尚未安装):
- sudo apt update
- sudo apt install -y mongodb
- sudo systemctl start mongodb
- sudo systemctl enable mongodb
- 编辑配置文件(常见路径为:/etc/mongod.conf 或 /etc/mongodb.conf),启用授权:
- 重启服务使配置生效:
- sudo systemctl restart mongod
- 如仅本机访问,建议限制绑定地址(可选):
- net:
- bindIp: 127.0.0.1
说明:用户是针对特定数据库创建的,启用授权后,连接需提供有效凭据。
二 常用用户管理操作
- 连接 Shell:mongosh --host 127.0.0.1 --port 27017
- 创建管理员(在 admin 库):
- use admin
- db.createUser({
user: “admin”,
pwd: “StrongPass!23”,
roles: [{ role: “userAdminAnyDatabase”, db: “admin” }]
})
- 创建数据库专属用户(在目标数据库创建):
- use mydb
- db.createUser({
user: “appuser”,
pwd: “AppPass!45”,
roles: [{ role: “readWrite”, db: “mydb” }]
})
- 列出当前库用户:
- show users 或 db.getUsers()
- 删除用户(先切到对应用户所在的库):
- use mydb
- db.dropUser(“appuser”)
- 为用户追加角色(在用户所在库执行):
- db.grantRolesToUser(“appuser”, [{ role: “dbAdmin”, db: “mydb” }])
要点:创建与删除用户都需要在“该用户所对应的数据库”中执行;为用户授予权限时,同样在该库执行。
三 连接与验证示例
- 管理员登录:
- mongosh -u “admin” -p “StrongPass!23” --authenticationDatabase “admin”
- 应用用户登录(指定认证库为对应用户库):
- mongosh -u “appuser” -p “AppPass!45” --authenticationDatabase “mydb”
- 在 Shell 内验证身份:
- db.auth(“appuser”, “AppPass!45”)
- 直接带库连接并验证:
- mongosh mongodb://appuser:AppPass!45@127.0.0.1:27017/mydb
说明:–authenticationDatabase 应填写创建该用户时所在的数据库(如 admin 或 mydb)。
四 常见内置角色与适用场景
- 数据库级别:
- read:只读
- readWrite:读写
- dbAdmin:库级管理(索引、统计等)
- dbOwner:库级所有权限(含用户管理)
- 集群与运维:
- clusterAdmin:集群管理(如分片、复制集)
- userAdminAnyDatabase:跨库用户管理(常用于创建/管理其他用户)
- 超级用户:
- root:最高权限(谨慎使用)
实践建议:遵循最小权限原则,为应用分配仅所需的角色。
五 安全与运维建议
- 始终启用 authorization: enabled,并为管理操作与业务操作分别创建不同账户。
- 仅开放必要网络访问:生产环境建议 bindIp: 127.0.0.1;如必须远程访问,结合防火墙与 TLS/SSL 加固。
- 使用强密码并定期轮换;删除不再使用的用户与角色。
- 备份与变更前先在测试环境验证;对关键操作(如关闭服务)使用具备相应权限的账户执行。