Если сделать как вы описали - авторизация происходит успешно. Вероятно, где-то в процессе настройки, либо авторизации была допущена ошибка - например, пользователь создан не в той базе или что-то еще.
Листинг моей проверкиdocker volume create testvol
docker run --rm --name test-mongo -v "testvol:/data/db" -d mongo
docker exec -it test-mongo mongo
use testDb;
db.createCollection("testCollection");
use admin;
db.createRole({
role: "Admin",
privileges: [{
resource: {
db: "testDb",
collection: "testCollection"
},
actions: ["anyAction", "internal"]
}],
roles: []
});
db.createUser({
user: "Admin",
pwd: "testpasswd",
roles: ["Admin"]
});
db.adminCommand({"listDatabases":1, "filter": {"name": "testDb"}, "nameOnly": true});
// { "databases" : [ { "name" : "testDb" } ], "ok" : 1 }
docker stop test-mongo
docker run --rm -v "testvol:/data/db" --name test-mongo -d mongo --auth
docker exec -it test-mongo mongo
db.adminCommand({"listDatabases":1, "filter": {"name": "testDb"}, "nameOnly": true});
//{
// "ok" : 0,
// "errmsg" : "command listDatabases requires authentication",
// "code" : 13,
// "codeName" : "Unauthorized"
//}
use admin;
db.auth("Admin", "testpasswd");
// 1
db.adminCommand({"listDatabases":1, "filter": {"name": "testDb"}, "nameOnly": true});
// { "databases" : [ { "name" : "testDb" } ], "ok" : 1 }
При отключенной авторизации все базы данных должны быть вам видны по идее. Возможно, созданный пользователь как-то мешает их видеть в админках, через которые вы проверяете, так что используйте команду `listDatabases` для чистоты эксперимента. Запустите базу с отключенной авторизацией, проверьте, что база есть. Если ее нет - вероятно тут уже проблема не связанная с авторизацией - напишите тут об этом. Найдите, где у вас создан пользователь Admin и удалите его.
docker run --rm -v "testvol:/data/db" --name test-mongo -d mongo
docker exec -it test-mongo mongo
use admin;
// switched to db admin
db.getUsers();
// [{ "_id" : "admin.Admin", ...
db.dropUser("Admin");
// true
После этого можно настроить пользователя заново. Возможно, имеет смысл создать "суперпользователя" - пользователя, под которым вы сможете администрировать базу без необходимости перезапускать сервер с отключенной авторизацией. Ведь пользователю Admin вы выдаете права только на одну коллекцию, а не на инстанс и он, я так понимаю, не сможет ни создать дополнительных бд, ни коллекций, ни пользователей.
Для этого можно использовать роль
root, например.
И уже под этим пользователем продолжайте настройку.
Отмечу, что насчет разрешений, которые вы выдаете вашему пользователю
написано:
> Do not assign this action unless it is absolutely necessary.
Стоит ему выдать ровно те разрешения, которые ему необходимы для текущей работы, а остальное делать из-под "суперпользователя".