当 mongod 作为服务启动时进行 Mongo 身份验证

当 mongod 作为服务启动时进行 Mongo 身份验证

系统规格:

  • 操作系统:Debian 10
  • Mongo Shell:v4.4.4
  • Mongod:v4.4.4

我成功为 MongoDB 创建了一个具有以下权限的用户管理员(来自show usersMongo 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

知道是什么原因造成这种情况吗?

相关内容