Мой сценарий : у меня запущен экземпляр mongodb со следующей базой данных:
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
event-service 0.000GB
Я также создал несколько пользователей.
Когда я захожу в mongoи проверьте существующих пользователей, вот результат:
> use admin
switched to db admin
> db.system.users.find().pretty()
{
"_id" : "admin.admin",
"userId" : UUID("0e41bcf5-9cdc-4fe5-8989-7db842cb3f1a"),
"user" : "admin",
"db" : "admin",
"credentials" : {
"SCRAM-SHA-1" : {
"iterationCount" : 10000,
"salt" : "5BN0tb2b68yNMpRywAkj+w==",
"storedKey" : "9MVDlhYob4C2jcySGQrZKIj71NQ=",
"serverKey" : "U2CB/y/Mkubqm6J0w6pNfQFACV0="
},
"SCRAM-SHA-256" : {
"iterationCount" : 15000,
"salt" : "iDfSw3i7STGdlS0gqxIWylJVQebW53YOUri39w==",
"storedKey" : "xHXZYpz03tR2XS+dVa/lTBs+hzkF6lSd2xUmib8H0S4=",
"serverKey" : "OsjxxEc/f3KOlGdqyJ4N5/UyhzJts9ycVZsEOS4cxrA="
}
},
"roles" : [
{
"role" : "dbAdmin",
"db" : "event-service"
},
{
"role" : "root",
"db" : "admin"
},
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
]
}
{
"_id" : "event-service.eventadmin",
"userId" : UUID("c3e35487-4af1-448c-93cc-b1a83920949b"),
"user" : "eventadmin",
"db" : "event-service",
"credentials" : {
"SCRAM-SHA-1" : {
"iterationCount" : 10000,
"salt" : "l0qqUmFl+74gh/EdAGdOcQ==",
"storedKey" : "IS4lmKjzb0+sDoKWc2hcO8YIZ8w=",
"serverKey" : "xXVTDAilaMVShGmUo19UatdexYs="
},
"SCRAM-SHA-256" : {
"iterationCount" : 15000,
"salt" : "JinBcUBW7V539Go/gKr9s6Vi15EJCNJRMQQnpQ==",
"storedKey" : "nX48I9NaSqrUD1RphTXmNDhHn1K1OZkVK8mzPHaBh5Y=",
"serverKey" : "K7qtrFivxRb6JDGruqYB9ETBbzpBg2zrgEo9cqCeX7k="
}
},
"roles" : [
{
"role" : "dbAdmin",
"db" : "event-service"
}
]
}
Когда я включаю аутентификацию для mongodb с опцией --auth
и пытаюсь войти в систему с mongo -u admin -p admin --authenticationDatabase event-service
, он говорит:
Ошибка: Проверка подлинности не удалась
Мои вопросы:
Почему не удается выполнить проверку подлинности на основе базы данных «служба событий», даже еслиУ пользователя "admin" есть роль dbAmin?
Как я понимаю, эта команда
mongo -u eventadmin -padmin --authenticationDatabase event-service
войдет в mongodb, используйте базу данных «test» по умолчанию.И это эквивалентно этой строке подключения
spring.data.mongodb.uri = mongodb: // eventadmin: admin @ localhost: 27017 / event-service
.Это правильно?
Если 2 / правильно, какая строка подключения эквивалентна этой команде?
mongo -u eventAdmin -p admin --authenticationDatabase event-service event-service
Я хочу, чтобы после успешного доступа моих служб к mongodb с помощью этой строки подключения он автоматически подключался к базе данных «event-service» вместо базы данных по умолчанию «test».