mongodb身份验证和连接字符串是如何工作的?

mongodb身份验证和连接字符串是如何工作的?,mongodb,database-connection,connection-string,Mongodb,Database Connection,Connection String,我的场景:我有一个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

我的场景:我有一个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"
    }
]
}
当我使用
--auth
选项为mongodb启用身份验证,并尝试使用
mongo-u admin-p admin--authenticationDatabase事件服务登录时,它会显示

错误:身份验证失败

我的问题:

  • 为什么即使“管理员”用户具有dbAmin角色,它也无法对“事件服务”数据库进行身份验证

  • 据我所知,这个命令

  • mongo-u eventadmin-p admin--authenticationDatabase事件服务

    将登录到mongodb,使用默认的“test”db。它相当于这个连接字符串

    spring.data.mongodb.uri=mongodb://eventadmin:admin@本地主机:27017/事件服务

    。对吗

  • 如果2/正确,那么与此命令等效的连接字符串是什么
  • mongo-u eventAdmin-p admin--authenticationDatabase事件服务事件服务

    我想要的是,在我的服务使用这个连接字符串成功访问mongodb之后,它将自动连接到“事件服务”db,而不是默认的“测试”db