Size: a a a

2020 April 29

y

yopp in MongoDB Russian
но из-за этого с терминологией получается каша
источник

y

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

y

yopp in MongoDB Russian
и он и не нужен
источник

y

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

DS

Dmitry Sergeev in MongoDB Russian
yopp
вы упорно пытались использовать хранилище привилегий local, но у вас туда нет по-умолчанию доступа
ну я же начал делать не от хорошей жизни. А от конкретной ошибки, когда пытался дать права на эту базу
источник

y

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

y

yopp in MongoDB Russian
значение имеет скоуп привилегий
источник

y

yopp in MongoDB Russian
а не хранилище
источник

y

yopp in MongoDB Russian
хранилище это как passwd файл
источник

DS

Dmitry Sergeev in MongoDB Russian
yopp
вы это начали делать, считая что создание пользователей в другой базе имеет какое-то значение, но это не так
нет, я приводил оба варианта. Для наглядности
А то что пользователь с ролью {"role" : "custom","db" : "admin"}. Может что-то делать в другой базе, странно
источник

y

yopp in MongoDB Russian
db здесь не скопу роли
источник

y

yopp in MongoDB Russian
А хранилище
источник

y

yopp in MongoDB Russian
Откуда её взять
источник

DS

Dmitry Sergeev in MongoDB Russian
yopp
db здесь не скопу роли
Хранилище же выбирается, когда ты выбираешь конкретную базу, в которой создает пользователя или роли.
У роли тоже стоит db:"admin"

> db.getRole('custom')
{
"role" : "custom",
"db" : "admin",
"isBuiltin" : false,
"roles" : [ ],
"inheritedRoles" : [ ]
}


Ну это видимо тоже хранилище
источник

y

yopp in MongoDB Russian
Да. Скоуп заедается через resource
источник

DS

Dmitry Sergeev in MongoDB Russian
Тогда не очень понятно. Как правильно дать доступ пользователю в другую базу, но при этом хранить его в admin. Я раньше делал так:

user admin
db.createUser({ user: "test", pwd: "password", roles: [{role: "readWrite", db: "test"}]})


И пользователь хранится в admin, при этом у него стоит db:"test". И это как-то противоречит твоему утверждению, что когда я так пытался делать для local, то я пытался сделать это в хранилище local
источник

y

yopp in MongoDB Russian
В монге полный бардак с этим. Даже после десяти лет с монгой я постоянно путаюсь что и где
источник

y

yopp in MongoDB Russian
Ещё хуже в случае с шардом
источник

y

yopp in MongoDB Russian
Потому что там будут cluster wide и shard local ветки привилегий
источник

DS

Dmitry Sergeev in MongoDB Russian
yopp
Ещё хуже в случае с шардом
ну если шарды, то по идее все доступы хранятся в config replocaset, если заходить через mongos, а если напрямую, то в самом шарде
источник