Nim*_*wal 0 mongodb docker docker-compose
我一直在尝试为 mongodb 设置密码
我的 docker-compose 文件是
version: "3"
services:
mongo:
image: mongo
ports:
- "27016:27017"
volumes:
- ./data:/data/db
environment:
- MONGO_INITDB_ROOT_USERNAME=root
- MONGO_INITDB_ROOT_PASSWORD=password
- MONG_INITDB_DATABASE=example
Run Code Online (Sandbox Code Playgroud)
现在在运行 docker 容器后,当我进入容器后尝试时
mongo mongodb://root:password@localhost:27017
Run Code Online (Sandbox Code Playgroud)
连接成功,
MongoDB shell 版本 v4.2.7 连接到: mongodb://localhost:27017/?compressors=disabled&gssapiServiceName=mongodb 隐式会话: session { "id" : UUID("71ec853d-3a05-4367-aa9f-d0a69217fb7d" version) : 4.2.7 服务器有启动警告: 2020-06-16T17:43:51.837+0000 I STORAGE [initandlisten] 2020-06-16T17:43:51.837+0000 I STORAGE [initandlisten] 是使用 XFSN 文件系统的 **强烈推荐使用 WiredTiger 存储引擎 2020-06-16T17:43:51.837+0000 I STORAGE [initandlisten] ** 见
但是当我尝试
mongo mongodb://root:password@localhost:27017/example
Run Code Online (Sandbox Code Playgroud)
认证失败。MongoDB shell 版本 v4.2.7 连接到:mongodb://localhost:27017/example?compressors=disabled&gssapiServiceName=mongodb 2020-06-16T17:51:08.226+0000 E QUERY [js] 错误:身份验证失败。:connect@src/mongo/shell/mongo.js:341:17
当我尝试使用节点应用程序从外部访问时也是如此。(也使用 docker-compose 运行节点应用程序)
mongo mongodb://root:password@mongo:27017/example
不知道为什么没有在任何博客或教程中提到它,但根据官方文档, https://docs.mongodb.com/manual/reference/connection-string/#components
/defaultauthdb
Optional. The authentication database to use if the connection string includes username:password@ authentication credentials but the authSource option is unspecified.
If both authSource and defaultauthdb are unspecified, the client will attempt to authenticate the specified user to the admin database.
Run Code Online (Sandbox Code Playgroud)
所以最后的工作是添加 authSource,没有 authSource mongod 尝试在 /example db 中找到凭证,从而在添加 authSource 后出现错误
mongodb://root:password@localhost:27016/example?authSource=admin
Run Code Online (Sandbox Code Playgroud)
这有效并成功地将数据添加到示例数据库
| 归档时间: |
|
| 查看次数: |
1871 次 |
| 最近记录: |