Size: a a a

2020 April 29

y

yopp in MongoDB Russian
проверьте права
источник

DS

Dmitry Sergeev in MongoDB Russian
yopp
not authorized
рута права

> db.runCommand({connectionStatus : 1})
{
"authInfo" : {
 "authenticatedUsers" : [
  {
   "user" : "root",
   "db" : "admin"
  }
 ],
 "authenticatedUserRoles" : [
  {
   "role" : "root",
   "db" : "admin"
  }
 ]
},
"ok" : 1
}
источник

y

yopp in MongoDB Russian
Dmitry Sergeev
рута права

> db.runCommand({connectionStatus : 1})
{
"authInfo" : {
 "authenticatedUsers" : [
  {
   "user" : "root",
   "db" : "admin"
  }
 ],
 "authenticatedUserRoles" : [
  {
   "role" : "root",
   "db" : "admin"
  }
 ]
},
"ok" : 1
}
источник

y

yopp in MongoDB Russian
Prior to 3.4, dbAdminAnyDatabase includes local and config databases. To provide dbAdmin privileges on the local database, create a user in the admin database with dbAdmin role in the local database.
источник

y

yopp in MongoDB Russian
"role" : "root",
   "db" : "admin
<-----
источник

y

yopp in MongoDB Russian
в монге бардак с правами
источник

y

yopp in MongoDB Russian
проще отключить аутентификацию, удалить базу, включить аутетнификацию
источник

DS

Dmitry Sergeev in MongoDB Russian
yopp
"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

Тоже самое и для назначения роли
swit
ched 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:
источник

y

yopp in MongoDB Russian
Dmitry Sergeev
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

Тоже самое и для назначения роли
swit
ched 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:
нет
источник

DS

Dmitry Sergeev in MongoDB Russian
yopp
нет
да
источник

y

yopp in MongoDB Russian
-> Любой пользователь созданный в базе admin, с правами на другие базы, будет иметь доступ к другим базам.
нет
источник

DS

Dmitry Sergeev in MongoDB Russian
yopp
-> Любой пользователь созданный в базе admin, с правами на другие базы, будет иметь доступ к другим базам.
нет
да
источник

y

yopp in MongoDB Russian
вам в документации написано чёрным по белому
источник

y

yopp in MongoDB Russian
вы можете продолжать спорить
источник

y

yopp in MongoDB Russian
но вам нужно в admin дать root роль на базу local
источник

y

yopp in MongoDB Russian
потому что dbAdmin _не даёт_ права на local и config
источник

y

yopp in MongoDB Russian
а так как root это мета-роль, у root по-умолчанию _нет_ прав на администрирование local и config
источник

y

yopp in MongoDB Russian
как я сказал, проще всего запустить на loopback, выключить аутентификацию, удалить что хотите, запустить на продуктивном порту
источник

y

yopp in MongoDB Russian
потому что root это не unix root
источник

y

yopp in MongoDB Russian
есть ряд привилегий которых у root нет по-умолчанию, но он может их себе или другим добавить
источник