配置 MongoDB身份验证

错误信息,MongoServerError: Authentication failed 表示身份验证失败。可能的原因和解决步骤如下:

1. 确认用户和密码

确保您在创建用户时输入的用户名和密码是正确的。在 MongoDB 中,用户名和密码是区分大小写的。请确保在连接时使用正确的大小写。

2. 确认用户的权限

确保您在创建用户时设置了足够的权限。例如,使用以下命令创建用户:

use admin
db.createUser({
  user: "adminUser",
  pwd: "yourPassword",
  roles: [{ role: "userAdminAnyDatabase", db: "admin" }]
})

该用户应该有足够的权限来访问您尝试连接的数据库。

3. 检查 MongoDB 配置

确保您在启动 MongoDB 容器时正确启用了身份验证。使用以下命令启动容器:

sudo docker run -d \
  --name mongodb \
  -p 27017:27017 \
  -v /path/to/your/data:/data/db \
  mongo --auth

4. 使用正确的身份验证数据库

在连接时,确保使用 --authenticationDatabase admin。这是因为您创建用户时是使用 admin 数据库。

5. 重新创建用户(可选)

如果您仍然遇到问题,可以尝试删除现有容器并重新创建用户:

  1. 停止并删除当前 MongoDB 容器:
    (删除容器,之前的数据库内容也会随之删除)

    sudo docker stop mongodb
    sudo docker rm mongodb
    
  2. 重新启动 MongoDB 容器并启用身份验证:

    sudo docker run -d \
      --name mongodb \
      -p 27017:27017 \
      -v /path/to/your/data:/data/db \
      mongo --auth
    
  3. 进入 MongoDB 容器并创建用户:

    sudo docker exec -it mongodb mongosh
    

    在 MongoDB Shell 中执行以下命令:

    use admin
    db.createUser({
      user: "adminUser",
      pwd: "yourPassword",
      roles: [{ role: "userAdminAnyDatabase", db: "admin" }]
    })
    

6. 使用 MongoDB Shell 验证连接

在创建用户后,尝试使用以下命令连接:

sudo docker exec -it mongodb mongosh -u adminUser -p yourPassword --authenticationDatabase admin

7. 检查 Docker 网络配置

确保您的 Docker 网络设置没有问题。有时,Docker 网络配置可能会影响连接。确保您可以通过 localhost127.0.0.1 访问 MongoDB。

8.添加身份验证成功后,防火墙端口要放行-27017

9. 查看 MongoDB 日志

如果问题仍然存在,您可以查看 MongoDB 的日志以获取更详细的错误信息。您可以在容器中使用以下命令查看日志:

sudo docker logs mongodb
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。