温馨提示×

MongoDB在Ubuntu上的权限管理如何设置

小樊
45
2025-12-24 14:28:56
栏目: 云计算

Ubuntu 上 MongoDB 权限管理实操指南

一 启用认证与基础安全

  • 编辑配置文件:sudo nano /etc/mongod.conf,在文件中启用安全项并建议限制绑定地址
    • 示例:
      • security.authorization: enabled
      • net.bindIp: 127.0.0.1(如需远程,再改为服务器内网/公网 IP,谨慎开放)
  • 重启服务并设为开机自启:
    • sudo systemctl restart mongod
    • sudo systemctl enable mongod
  • 注意:首次启用认证前,先在未开启认证的状态下创建管理员账户,否则将被锁在外面无法创建用户。

二 创建管理员账户

  • 连接 Shell:mongosh(旧版可用 mongo)
  • 切换到 admin 库并创建超级管理员(仅在 admin 库可创建具有跨库权限的角色):
    • use admin
    • db.createUser({ user: “admin”, pwd: “StrongPass!”, roles: [{ role: “root”, db: “admin” }] })
  • 验证登录:mongosh -u admin -p StrongPass! --authenticationDatabase admin
  • 说明:具有 root 角色的账号拥有最高权限;也可按需创建仅具用户管理权限的账号(如 userAdminAnyDatabase),再由其分配各库用户。

三 为业务库创建用户与授权

  • 原则:在哪个库创建用户,该用户的“认证数据库”就是那个库;跨库权限需在 admin 库授予相应角色。
  • 示例(为业务库 my_db 创建拥有完整权限的账号):
    • use my_db
    • db.createUser({ user: “app_user”, pwd: “AppPass!”, roles: [{ role: “dbOwner”, db: “my_db” }] })
  • 示例(只读账号):
    • use my_db
    • db.createUser({ user: “reader”, pwd: “ReadPass!”, roles: [{ role: “read”, db: “my_db” }] })
  • 连接验证:mongosh mongodb://app_user:AppPass!@127.0.0.1:27017/my_db
  • 常用内置角色(按最小权限原则分配):
    • 数据库级:readreadWritedbAdmindbOwneruserAdmin
    • 集群级:clusterAdminclusterManagerclusterMonitorhostManager
    • 备份恢复:backuprestore
    • 全库级(仅 admin 库可授):readAnyDatabasereadWriteAnyDatabasedbAdminAnyDatabaseuserAdminAnyDatabase
    • 超级用户:root

四 日常运维与常见操作

  • 查看某库用户:use my_db → show users
  • 修改用户密码(需在相应用户所在库执行):
    • db.changeUserPassword(“app_user”, “NewPass!”)
  • 删除用户:use my_db → db.dropUser(“app_user”)
  • 以特定账户执行命令(命令行):
    • mongosh -u reader -p ReadPass! --authenticationDatabase my_db my_db
  • 导入导出时指定账户:
    • mongoimport -h 127.0.0.1 --port 27017 -u admin -p StrongPass! -d student -c areas areas.dat --authenticationDatabase admin
  • 注意:旧版 Shell 的 addUser 已不推荐,统一使用 createUser

五 远程访问与防火墙要点

  • 仅当需要远程连接时,修改 /etc/mongod.conf
    • net.bindIp: 0.0.0.0(或指定内网 IP 段)
    • 并确保 security.authorization: enabled
  • 重启服务:sudo systemctl restart mongod
  • 防火墙放行(UFW):sudo ufw allow 27017(如面向公网,务必配合强认证与 IP 白名单)。

0