"role" : "root",
"db" : "admin <-----
https://docs.mongodb.com/manual/reference/built-in-roles/#root
root содержит в себе dbAdminAnyDatabase
Любой пользователь созданный в базе admin, с правами на другие базы, будет иметь доступ к другим базам.
Привелигии роли root распространаются на все базы, если она назначена пользователю базы admin.
Но с local это не работает в том и проблема
Нелзья в базе local создать пользователя с ролью root или dbAdminAnyDatabase, или назначить любому пользователю эти роли для базы local
> use local
switched to db local
> db.createUser({ user: "root", pwd: "pass", roles: [{role: "root", db: "local"}]})
2020-04-29T14:44:52.839+0200 E QUERY [thread1] Error: couldn't add user: Cannot create users in the local database :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
DB.prototype.createUser@src/mongo/shell/db.js:1437:15
@(shell):1:1
> db.createUser({ user: "root", pwd: "pass", roles: [{role: "dbAdminAnyDatabase", db: "local"}]})
2020-04-29T14:45:32.230+0200 E QUERY [thread1] Error: couldn't add user: Cannot create users in the local database :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
DB.prototype.createUser@src/mongo/shell/db.js:1437:15
@(shell):1:1
Тоже самое и для назначения роли
switched to db admin
> db.grantRolesToUser('root',[{role:"root",db:"local"}])
2020-04-29T14:48:21.148+0200 E QUERY [thread1] Error: No role named root@local :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
DB.prototype.grantRolesToUser@src/mongo/shell/db.js:1640:19
@(shell):1:1
Там просто нет таких ролей. И создать их нельзя
> db.createRole({role:"custom",privileges: [ {resource: {db:"local",collection:"system.replset"}, actions: ["remove"] }], roles: []})
2020-04-29T14:50:53.341+0200 E QUERY [thread1] Error: Cannot create roles in the local database :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
DB.prototype.createRole@src/mongo/shell/db.js:1702:1
@(shell):1: