温馨提示×

MongoDB在Ubuntu上的权限设置怎么做

小樊
43
2025-11-17 02:47:13
栏目: 云计算

Ubuntu 上 MongoDB 权限设置实操指南

一 启用访问控制与网络限制

  • 编辑配置文件 /etc/mongod.conf,开启认证并限制监听地址:
    • 网络:仅本地访问
      net:
        port: 27017
        bindIp: 127.0.0.1
      
    • 安全:启用授权
      security:
        authorization: enabled
      
  • 重启服务使配置生效:
    sudo systemctl restart mongod
    
  • 说明:如未来需要远程访问,可将 bindIp 改为服务器内网地址(如 192.168.x.x)或使用 0.0.0.0 并配合防火墙与 TLS;生产环境不建议直接开放到公网。

二 创建管理员与数据库用户

  • 使用 mongosh 连接本地实例(未启用认证时可直连;若已启用,请使用具有管理员权限的账户):
    mongosh
    
  • admin 库创建管理员(具备用户管理权限):
    use admin
    db.createUser({
      user: "admin",
      pwd: "StrongPass!23",
      roles: [{ role: "userAdminAnyDatabase", db: "admin" }]
    })
    
  • 为业务库创建最小权限用户(示例为 mydb 的读写用户):
    use mydb
    db.createUser({
      user: "mydbuser",
      pwd: "AnotherPass!45",
      roles: [{ role: "readWrite", db: "mydb" }]
    })
    
  • 说明:也可以在业务库使用 dbOwner 角色获取该库内更完整的权限(含用户管理);删除用户需切到对应用户所在的库执行 db.dropUser(“用户名”)

三 连接与验证权限

  • 管理员连接:
    mongosh -u admin -p StrongPass!23 --authenticationDatabase admin
    
  • 业务用户连接(注意指定认证库为对应用户所在库):
    mongosh -u mydbuser -p AnotherPass!45 --authenticationDatabase mydb
    # 或带库名直连
    mongosh mongodb://mydbuser:AnotherPass!45@localhost:27017/mydb
    
  • 验证权限:
    • mydb 中执行写入并查看用户列表:
      use mydb
      db.test.insertOne({ x: 1 })
      show users
      
    • 若提示认证失败,请核对用户名、密码、认证库是否为创建该用户时所在的库。

四 常见问题与排查

  • 启用了 authorization: enabled 后无法登录:先用具有管理员权限的账户登录到 admin 库,再为业务库创建用户或调整角色。
  • 忘记管理员密码或权限混乱:在 /etc/mongod.conf 中临时将 security.authorization 注释或设为 disabled,重启服务后进入 mongosh 重置用户与角色,再恢复配置并重启。操作前务必做好数据备份。
  • 远程连接被拒绝:检查 bindIp 是否包含客户端网段、云服务器安全组/防火墙是否放行 27017,并尽量使用 TLS 加密传输。

0