MongoDB:无法使用 root 用户删除本地数据库

MongoDB:无法使用 root 用户删除本地数据库

我正在尝试删除local副本集中的数据库,以便可以重命名副本集,但我不断收到以下错误

errmsg" : "not authorized on local to execute command { dropDatabase: 1.0, lsid: { id: UUID(\"4a92bd75-2e25-4fab-abd7-2d72f65050c7\") }, $db: \"local\" }"

我正在使用具有权限的用户root,并且正在使用 MongoDB 4.0。有人知道为什么会发生这种情况吗?

答案1

这些建议在 Mongo 5.0.8 中对我不起作用,将授权设置为未启用不允许我删除本地数据库,向我的用户添加 root 角色不允许我删除数据库,但这是解决方案

use admin;
db.grantRolesToUser("adminUser", ["__system"]);
use local
db.dropDatabase()
use admin;
db.revokeRolesFromUser("adminUser", ["__system"]);

然后运行看起来像这样

local> use admin;
switched to db admin
admin> db.grantRolesToUser("adminUser", ["__system"]);
{ ok: 1 }
admin> use local
switched to db local
local> db.dropDatabase()
{ ok: 1, dropped: 'local' }
local> use admin;
switched to db admin
admin> db.revokeRolesFromUser("adminUser", ["__system"]);
{ ok: 1 }

答案2

Mongo 文档,尽管您的用户具有root角色,但您无法与数据库交互localconfig您需要dbAdmin在数据库中创建一个具有角色的新用户local。此更改是从 Mongo 3.4 开始实施的

另一种方法是禁用安全部分的授权/etc/mongod.conf

security:
  authorization: disabled

local这样,匿名用户可以对任何数据库执行任何操作。除非您是唯一有权访问 Mongo 节点的人,否则不推荐使用这种方法。删除数据库后,请务必重新激活它。

相关内容