mongodb 无法连接到我通过Docker compose启动的mongo数据库

qrjkbowd  于 2022-11-28  发布在  Go
关注(0)|答案(1)|浏览(296)

我正在通过docker compose启动一个mongo数据库,但现在无法连接到容器中的数据库。这是我的docker compose。

mongodb:
    image: <from my private registry>
    environment:
      MONGO_INITDB_ROOT_USERNAME: admin
      MONGO_INITDB_ROOT_PASSWORD: pass123
    ports:
      - 27017:27017
    volumes:
      - mongodata:/data/db

我使用docker composite up命令启动容器。现在我尝试进入mongo容器并连接到数据库,我看到以下错误。

> docker exec -it mymongo /bin/sh
 mongo -u admin -p
 MongoDB shell version v4.2.23
 Enter password: 
 connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
 2022-11-23T05:21:04.225+0000 E  QUERY    [js] Error: Authentication failed. :
 connect@src/mongo/shell/mongo.js:353:17
 @(connect):2:6
2022-11-23T05:21:04.228+0000 F  -        [main] exception: connect failed
 2022-11-23T05:21:04.228+0000 E  -        [main] exiting with code 1

任何文档,我去,它说同样的事情来传递用户凭据,因为我在docker组成,但它不工作。进一步的错误在日志中

Creating databases...
Creating service_configs
Error creating database service_configs!
MongoError: command listCollections requires authentication
    at MessageStream.messageHandler (/opt/pronghorn/itential-bundle-1-20202_2020.2.2/node_modules/@itential/database/node_modules/mongodb/lib/cmap/connection.js:268:20)

我做错了什么?

zsohkypk

zsohkypk1#

这个问题与docker无关,而是与Mongo DB中的身份验证工作方式有关。

左侧;右侧:

在login命令中添加--authenticationDatabase admin,即:
mongo -u admin -p --authenticationDatabase admin
"为什么"
您正在连接到缺省数据库(很可能是test)作为admin用户。admin用户本身没有在test数据库中定义,而是在admin数据库中定义,因此您需要指出应该在哪里查找该用户。如果您在test DB中创建一个新用户并使用他的凭据进行连接,--authenticationDatabase admin将不再是必需的。

相关问题