系统规格:
- 操作系统:Debian 10
- Mongo Shell:v4.4.4
- Mongod:v4.4.4
我成功为 MongoDB 创建了一个具有以下权限的用户管理员(来自show users
Mongo Shell 的输出)。
{
"_id" : "admin.admin",
"userId" : UUID("eca59ae2-66bd-42a7-b3d8-b946915922b7"),
"user" : "admin",
"db" : "admin",
"roles" : [
{
"role" : "root",
"db" : "admin"
},
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
],
"mechanisms" : [
"SCRAM-SHA-1",
"SCRAM-SHA-256"
]
}
我还对 /etc/mongod.conf 进行了必要的更新以启用身份验证:
security:
authorization: enable
当我使用 从 shell 启动 mongod 时,一切运行正常sudo mongod --auth
。我可以使用以下命令使用凭据进行连接:
mongo mongodb://localhost:27017/admin?authSource=admin --username 'admin' --password <mypassword>
然后我关闭 mongod 并尝试使用以下命令将其作为服务启动:sudo systemctl start mongod
,此时身份验证不再起作用。上面显示的相同 mongo connect 命令现在给出输出:
MongoDB shell version v4.4.4
connecting to: mongodb://localhost:27017/admin?authSource=admin&compressors=disabled&gssapiServiceName=mongodb
Error: Authentication failed. :
connect@src/mongo/shell/mongo.js:374:17
@(connect):2:6
exception: connect failed
exiting with code 1
知道是什么原因造成这种情况吗?