Ubuntu MongoDB的权限管理如何实现
导读: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" } ] } ) - 说明:用户是与数据库绑定的,创建与认证通常在该库上下文执行;删除用户也需先切到对应用户所在的库。
三 连接与验证权限
- 使用创建的用户连接:
或在已连上的 Shell 中认证:mongosh "mongodb://app_user:AppPass!45@127.0.0.1:27017/my_db"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
