Ubuntu 上管理 MongoDB 用户的实操指南
一 准备与启用认证
- 安装并启动服务(若尚未完成):
- sudo apt update
- sudo apt install -y mongodb
- sudo systemctl start mongodb
- sudo systemctl enable mongodb
- 启用访问控制(推荐在配置文件中开启):
- 编辑配置文件:sudo nano /etc/mongodb.conf
- 启用授权:
- 重启生效:sudo systemctl restart mongodb
- 说明:也可在命令行使用 mongod 的 –auth 参数,但生产环境建议使用配置文件管理。
二 常用用户管理操作
- 连接 Shell:mongosh(或旧版 mongo)
- 创建管理员(仅在 admin 库创建高权限账户):
- use admin
- db.createUser({
user: “admin”,
pwd: “StrongPass#123”,
roles: [{ role: “userAdminAnyDatabase”, db: “admin” }]
})
- 创建应用数据库用户(在哪个库创建,后续就要用该库进行认证):
- use mydb
- db.createUser({
user: “appuser”,
pwd: “AppPass#456”,
roles: [{ role: “readWrite”, db: “mydb” }]
})
- 列出与查看用户:
- 当前库:show users 或 db.getUsers()
- 指定库:use admin → db.getUsers()(查看所有库用户需具备相应权限)
- 修改密码:
- db.changeUserPassword(“appuser”, “NewPass#789”)
- 授予更多角色:
- db.grantRolesToUser(“appuser”, [{ role: “dbAdmin”, db: “mydb” }])
- 撤销角色:
- db.revokeRolesFromUser(“appuser”, [{ role: “dbAdmin”, db: “mydb” }])
- 删除用户:
- use mydb
- db.dropUser(“appuser”)
- 登录验证示例:
- mongosh mongodb://appuser:AppPass#456@localhost:27017/mydb
- 或在 Shell 内:use mydb → db.auth(“appuser”, “AppPass#456”)
三 角色与权限要点
- 数据库级:
- read:只读
- readWrite:读写
- dbAdmin:索引、统计等管理
- userAdmin:管理当前库的用户与角色
- dbOwner:对当前库拥有全部权限(含 userAdmin、dbAdmin 等)
- 集群级:
- clusterAdmin、clusterManager、clusterMonitor、hostManager
- 全库级(仅可在 admin 库授予):
- readAnyDatabase、readWriteAnyDatabase
- userAdminAnyDatabase、dbAdminAnyDatabase
- 超级用户:
- 实践建议:遵循最小权限原则,应用使用专属账户,管理员账户仅用于运维。
四 远程访问与安全加固
- 仅本地访问(默认更安全):
- /etc/mongodb.conf → net.bindIp: 127.0.0.1
- 需要远程访问时(务必配合强认证与防火墙):
- /etc/mongodb.conf → net.bindIp: 0.0.0.0
- 重启:sudo systemctl restart mongodb
- 防火墙放行(UFW 示例):
- sudo ufw allow from 你的IP/32 to any port 27017
- 安全清单:
- 开启 authorization
- 使用强密码并定期轮换
- 为不同应用创建最小权限账户
- 限制来源 IP,避免公网暴露 27017 端口
五 图形化管理工具
- 使用 MongoDB Compass:
- 连接后展开左侧 Security → Users → Add User
- 填写用户名、密码并选择角色(如 readWrite、dbOwner 等),保存即可。