IT俱乐部 Python MongoDB权限设置与登录授权方式及解读

MongoDB权限设置与登录授权方式及解读

一、角色权限

1.管理所有数据库角色

角色 权限说明 适用场景
root 超级管理员,拥有所有数据库和集群的完整权限(读写、管理、用户控制等)。 紧急维护或全局管理(生产环境慎用)。
dbAdminAnyDatabase 管理所有数据库的元数据(如创建/删除集合、索引),但不能读写数据。 跨库维护表结构(如批量创建索引)。
userAdminAnyDatabase 管理所有数据库的用户和角色(如创建用户、分配权限),但不能直接操作数据。 集中式用户权限管理(需严格审计)。
readWriteAnyDatabase 读写所有数据库的数据(增删改查),但不能管理数据库结构或用户。 跨库数据同步或全局数据操作。
readAnyDatabase 读取所有数据库的数据(仅查询),无写入权限。 跨库数据分析或监控工具。

2.管理指定数据库角色

角色 权限说明 适用场景
dbOwner 当前数据库的完全控制权限(包括 readWrite + dbAdmin + userAdmin)。 单库管理员(小型项目或独立业务库)。
dbAdmin 管理当前数据库的元数据(如索引、集合结构),不能读写数据。 维护特定库的表结构或统计信息。
userAdmin 管理当前数据库的用户和角色(如创建用户),不能操作数据或表结构。 单库用户权限管理(多租户系统)。
readWrite 读写当前数据库的数据(增删改查),不能管理数据库结构或用户。 应用程序的常规读写操作。
read 只读当前数据库的数据(查询),无写入权限。 只读报表或数据分析。

二、创建超级管理员

1.开启auth认证

security:
    authorization: enabled

开启auth认证后重新服务也是可以访问,不过看不到数据表

2.关闭auth认证创建root用户

关闭auth认证进度终端, 在 admin 数据库创建用户

use admin
db.createUser({
    user: "root",
    pwd: "123456",
    roles: [{ role: "root", db: "admin" }]
});

3.再次开启auth认证

下面的是使用root超级管理员登录,可以查看所有数据库,上面未用账户登录无法查看

三、创建拥有所有数据库查看权用户

db.createUser({
  user: "test1",
  pwd: "123456",
  roles: ["readAnyDatabase"]
})

尝试新增数据会报错,是因为只有只读权限,无法新增

四、创建只拥有某个数据库所有权限用户

db.createUser({
  user: "test2",
  pwd: "123456",
  roles: ["dbOwner"]
})

连接时要指定数据库,不然会报错

连接成功后

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持IT俱乐部。

本文收集自网络,不代表IT俱乐部立场,转载请注明出处。https://www.2it.club/code/python/17946.html
上一篇
下一篇
联系我们

联系我们

在线咨询: QQ交谈

邮箱: 1120393934@qq.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部