我有一个有点烦人的问题,应该是微不足道的,但我不能弄清楚。我使用的是Ubuntu Linux系统(Focal);我有一个启用了身份验证的mongo(版本5.0.3)数据库。我找不到一个命令行,它将使我进入我想要的数据库的mongo shell。有人能给我点提示吗?
如果我发出命令mongosh -u mongoAdmin -p '<password>' mongodb://127.0.0.1/
,我将使用测试数据库进入mongo shell。要访问我的数据库db-name,我需要发出命令use db-name
。
如果我发出命令mongosh -u mongoAdmin -p '<password>' mongodb://127.0.0.1/db-name
,我得到一个错误消息:
Current Mongosh Log ID: 617d0f78622b00d5095d474d
Connecting to: mongodb://127.0.0.1/db-name?directConnection=true&serverSelectionTimeoutMS=2000
MongoServerError: Authentication failed.
我在管理数据库中配置的用户:
[
{
_id: 'admin.mongoAdmin',
userId: UUID("6dbdd918-02c4-4000-b5e4-ff59db9f86ed"),
user: 'mongoAdmin',
db: 'admin',
roles: [ { role: 'userAdminAnyDatabase', db: 'admin' } ],
mechanisms: [ 'SCRAM-SHA-1', 'SCRAM-SHA-256' ]
}
]
缺少的部分是需要在命令行上指定身份验证数据库。这个命令可以工作:
mongosh mongodb://127.0.0.1/db-name -u mongoAdmin -p '<password>' --authenticationDatabase admin