温馨提示×

如何在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),启用授权:
    • security:
      • authorization: “enabled”
  • 重启服务使配置生效:
    • 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 加固。
  • 使用强密码并定期轮换;删除不再使用的用户与角色。
  • 备份与变更前先在测试环境验证;对关键操作(如关闭服务)使用具备相应权限的账户执行。

0