mongodb--用户管理

打印 上一主题 下一主题

主题 1659|帖子 1659|积分 4977

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
MongoDB 用户管理

1. 毗连到 MongoDB

在开始管理用户之前,起首需要毗连到 MongoDB 实例:
  1. # 连接到本地 MongoDB 实例
  2. mongo
  3. # 或者连接到远程实例
  4. mongo --host <hostname> --port <port> -u <username> -p <password>
复制代码
2. 用户创建

2.1 创建管理员用户

最大权限
  1. mongos> use admin
  2. mongos> db.createUser({user: "admin", pwd: "admin123", roles: ["root"]})
复制代码
起首创建一个具有效户管理权限的管理员账户:
  1. // 切换到 admin 数据库
  2. use admin
  3. // 创建管理员用户
  4. db.createUser({
  5.   user: "adminUser",
  6.   pwd: "securePassword123",  // 实际使用时请设置更复杂的密码
  7.   roles: [
  8.     { role: "userAdminAnyDatabase", db: "admin" },
  9.     { role: "readWriteAnyDatabase", db: "admin" },
  10.     { role: "dbAdminAnyDatabase", db: "admin" },
  11.     { role: "clusterAdmin", db: "admin" }
  12.   ]
  13. })
复制代码
2.2 创建特定命据库用户

为特定命据库创建用户:
  1. // 切换到目标数据库
  2. use myDatabase
  3. // 创建具有读写权限的用户
  4. db.createUser({
  5.   user: "appUser",
  6.   pwd: "appPassword123",
  7.   roles: [
  8.     { role: "readWrite", db: "myDatabase" },
  9.     { role: "dbAdmin", db: "myDatabase" }
  10.   ]
  11. })
复制代码
2.3 常用内置脚色



  • read: 只读权限
  • readWrite: 读写权限
  • dbAdmin: 数据库管理权限
  • userAdmin: 用户管理权限
  • clusterAdmin: 集群管理权限(仅admin数据库)
  • dbOwner: 数据库全部者(包罗readWrite, dbAdmin和userAdmin权限)
3. 用户管理操纵

3.1 查看全部效户

  1. use admin
  2. db.system.users.find()
复制代码
3.2 查看特定用户信息

  1. db.getUser("appUser")
复制代码
3.3 更新用户暗码

  1. db.updateUser("appUser", {
  2.   pwd: "newSecurePassword456"
  3. })
复制代码
3.4 添加用户脚色

  1. db.grantRolesToUser("appUser", [
  2.   { role: "read", db: "anotherDatabase" }
  3. ])
复制代码
3.5 移除用户脚色

  1. db.revokeRolesFromUser("appUser", [
  2.   { role: "read", db: "anotherDatabase" }
  3. ])
复制代码
3.6 删除用户

  1. db.dropUser("appUser")
复制代码
4. 权限修改

4.1 创建自界说脚色

  1. use admin
  2. db.createRole({
  3.   role: "customAppRole",
  4.   privileges: [
  5.     {
  6.       resource: { db: "myDatabase", collection: "customers" },
  7.       actions: ["find", "insert", "update"]
  8.     },
  9.     {
  10.       resource: { db: "myDatabase", collection: "orders" },
  11.       actions: ["find"]
  12.     }
  13.   ],
  14.   roles: []
  15. })
复制代码
4.2 将自界说脚色分配给用户

  1. db.grantRolesToUser("appUser", ["customAppRole"])
复制代码
5. 启用身份验证

要利用户管理生效,需要在 MongoDB 设置中启用身份验证:

  • 编辑 MongoDB 设置文件(通常位于 /etc/mongod.conf)
  • 添加或修改以下部分:
  1. security:
  2.   authorization: enabled
复制代码

  • 重启 MongoDB 服务:
  1. sudo systemctl restart mongod
复制代码
6. 允许长途毗连

6.1 修改绑定IP


  • 编辑 MongoDB 设置文件:
  1. net:
  2.   port: 27017
  3.   bindIp: 0.0.0.0  # 允许所有IP连接,或指定特定IP
复制代码

  • 重启 MongoDB 服务
6.2 防火墙设置

假如服务器有防火墙,需要开放 MongoDB 端口(默认27017):
  1. sudo ufw allow 27017
复制代码
6.3 安全注意事项

允许长途毗连时,务必:


  • 利用强暗码
  • 思量设置网络层面的访问控制(如IP白名单)
  • 启用TLS/SSL加密毗连
  • 限制用户权限到最小必要范围
7. 利用认证毗连

启用认证后,毗连时需要提供凭据:
  1. mongo -u "appUser" -p "appPassword123" --authenticationDatabase "myDatabase"
复制代码
或者在毗连字符串中:
  1. mongo "mongodb://appUser:appPassword123@localhost:27017/myDatabase"
复制代码
8. 最佳实践


  • 遵循最小权限原则,只授予用户必要的权限
  • 定期审计用户和权限
  • 利用复杂的暗码并定期更换
  • 生产情况思量启用TLS/SSL加密
  • 对于重要操纵,思量利用审计日记
9. 常见问题解决

9.1 忘记管理员暗码


  • 暂时关闭认证(修改设置文件,去掉authorization: enabled)
  • 重启 MongoDB
  • 毗连到无认证的实例
  • 重置管理员暗码
  • 重新启用认证并重启
9.2 毗连被拒绝



  • 查抄 MongoDB 服务是否运行
  • 查抄防火墙设置
  • 验证绑定IP设置
  • 查抄认证凭据是否精确

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

玛卡巴卡的卡巴卡玛

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表