mongodb - MongoDb - 授予用户访问特定数据库的权限
问题描述
我正在开发一个使用不同数据库的应用程序,并努力实现正确的用户管理。
假设我们有一个用户“BasicUser”(在 admin 数据库中创建),它只对特定数据库拥有 dbAdmin 权限,在本例中称为“TestDb”。此外,我们创建了一个没有任何访问权限的用户“TestUser”。
BasicUser 是否有可能为 TestUser 授予对 TestDb 的读/写访问权限?
当我使用 BasicUser 登录时,我尝试了以下选项
- 使用测试数据库;db.grantRolesToUser("TestUser", ["read"]) --> 这会返回找不到用户的错误
- 使用测试数据库;db.updateUser("TestUser", {roles: ["read"]}) --> 这会返回一个错误,我们没有被授权执行命令
需要明确的是,我不想在 admin 数据库上为 BasicUser 提供任何管理员权限,因为我不希望 BasicUser 看到任何其他数据库。此用户应该只能看到 TestDb 并在此数据库上执行其管理任务。
解决方案
在admin
数据库中创建用户(实际上我不知道为什么会在其他任何地方创建用户)。
然后授予
db.getSiblingDB("admin").grantRolesToUser( "TestUser", [ { role: "dbOwner", db: "TestDb" } ] )
不清楚您所说的“授予访问权限”是什么意思?也许不是dbOwner
,您只想授予readWrite
,请参阅内置角色
推荐阅读
- heroku - 如何将 Heroku 链接到 Godaddy 域?
- javascript - 在 SuiteScript 2.0 中引用自定义 AMD 模块
- momentjs - 使用 moment.js 以秒为单位获取当前时间
- python - 使用 Python 3,为什么 int 方法不处理代表浮点数的字符串?这是设计使然吗?
- asp.net-core - Asp.net Core SQLite 数据库位置
- c# - Naudio + Unity:如何访问 DeviceCount
- python - ValueError:值的长度与索引的长度不匹配 - json_normalize
- java - 休息服务的 SoapUI 自定义属性
- mysql - 为什么 LIMIT 和 OFFSET 在 mysql 脚本中不起作用?
- android - 如何从 CardView 中移除外部视图?