首页主机资讯Ubuntu MongoDB的权限管理如何实现

Ubuntu MongoDB的权限管理如何实现

时间2026-01-21 17:22:06发布访客分类主机资讯浏览1326
导读:Ubuntu 上 MongoDB 权限管理实操指南 一 启用认证与基础安全 编辑配置文件(常见路径:/etc/mongod.conf 或 /etc/mongodb.conf),在顶层加入:security: authorization...

Ubuntu 上 MongoDB 权限管理实操指南

一 启用认证与基础安全

  • 编辑配置文件(常见路径:/etc/mongod.conf/etc/mongodb.conf),在顶层加入:
    security:
      authorization: "enabled"
    
  • 重启服务(Ubuntu 16.04+/使用 systemd 的版本):
    sudo systemctl restart mongod
    
  • 说明:MongoDB 默认不启用认证;启用后,所有客户端连接都需要提供凭据。旧版本也可用命令行参数 –auth 启动以开启认证。

二 创建管理员与业务用户

  • 连接 Shell:
    mongosh --host 127.0.0.1 --port 27017
    
  • admin 库创建管理员(具备用户管理能力,谨慎分配):
    use admin
    db.createUser({
    
      user: "admin",
      pwd: "StrongPass!23",
      roles: [ {
     role: "userAdminAnyDatabase", db: "admin" }
     ]
    }
    )
    
  • 在业务库创建用户(示例对 my_db 赋予读写与库级管理):
    use my_db
    db.createUser({
    
      user: "app_user",
      pwd: "AppPass!45",
      roles: [
        {
     role: "readWrite", db: "my_db" }
    ,
        {
     role: "dbAdmin",   db: "my_db" }
    
      ]
    }
    )
    
  • 说明:用户是与数据库绑定的,创建与认证通常在该库上下文执行;删除用户也需先切到对应用户所在的库。

三 连接与验证权限

  • 使用创建的用户连接:
    mongosh "mongodb://app_user:AppPass!45@127.0.0.1:27017/my_db"
    
    或在已连上的 Shell 中认证:
    use my_db
    db.auth("app_user", "AppPass!45")
    
  • 验证权限示例:
    use my_db
    show collections
    db.mycoll.insertOne({
    x:1}
        )
    
  • 常见内置角色选择:
    • read:只读
    • readWrite:读写
    • dbAdmin:库级管理(索引、统计等,不含用户管理)
    • dbOwner:库级“所有者”(含 readWrite + dbAdmin + userAdmin 的组合)
    • userAdmin / userAdminAnyDatabase:用户与角色管理
    • root:超级用户(慎用)

四 用户维护与常用命令

  • 修改密码:
    use admin
    db.changeUserPassword("app_user", "NewPass!67")
    
  • 查看某库用户:
    use my_db
    show users
    
  • 删除用户:
    use my_db
    db.dropUser("app_user")
    
  • 说明:这些操作需具备相应权限(如 userAdmin 或库级 dbOwner)。

五 安全实践与常见问题

  • 安全建议
    • 禁止在生产环境使用 root 日常操作;为应用分配最小权限专用账号
    • 使用强密码并定期轮换;限制来源 IP 与端口,仅在内网或启用 TLS 时开放外网访问。
    • 对管理操作与业务操作使用不同账号,并遵循最小权限原则。
  • 常见问题排查
    • 启用认证后连接报 Authentication failed:检查用户名、密码、–authenticationDatabase 是否指向创建该用户的库(如 my_db),以及服务是否已重启。
    • 提示 not authorized:确认当前连接已在该库完成 db.auth,且用户具备对应角色(如 readWrite)。
    • 配置不生效:确认修改的是正确的 mongod.conf,并执行了 sudo systemctl restart mongod;旧版本如使用包管理器安装,配置文件路径可能不同。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Ubuntu MongoDB的权限管理如何实现
本文地址: https://pptw.com/jishu/788872.html
ubuntu上postgresql数据如何备份 debian分区经验总结

游客 回复需填写必要信息