我一直在尝试设置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
现在运行docker容器后,当我尝试 进入容器后
mongo mongodb://root:password@localhost:27017
连接成功,
MongoDB Shell版本v4.2.7 连接到:mongodb:// localhost:27017 /?compressors = disabled&gssapiServiceName = mongodb 隐式会话:会话{“ id”:UUID(“ 71ec853d-3a05-4367-aa9f-d0a69217fb7d”)} MongoDB服务器版本:4.2.7 服务器有启动警告: 2020-06-16T17:43:51.837 + 0000我存储了[initandlisten] 2020-06-16T17:43:51.837 + 0000 I STORAGE [initandlisten] **警告:强烈建议WiredTiger存储引擎使用XFS文件系统 2020-06-16T17:43:51.837 + 0000 I存储[initandlisten] **请参见
但是当我尝试
mongo mongodb://root:password@localhost:27017/example
身份验证失败。 MongoDB Shell版本v4.2.7 连接到:mongodb:// localhost:27017 / example?compressors = disabled&gssapiServiceName = mongodb 2020-06-16T17:51:08.226 + 0000 E查询[js]错误:验证失败。 : connect@src/mongo/shell/mongo.js:341:17
当我尝试使用节点应用程序从外部访问时也是如此。 (也可以使用docker-compose运行节点应用)
mongo mongodb:// root:password @ mongo:27017 / example
答案 0 :(得分:3)
不知道为什么在任何博客或教程中都没有提到它,但是根据官方文档, 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.
所以最终可行的方法是添加authSource,而没有authSource的mongod尝试在添加authSource之后在/ example db中找到证书,从而给出错误消息
mongodb://root:password@localhost:27016/example?authSource=admin
这可以成功地将数据添加到示例数据库
答案 1 :(得分:1)
在将Docker容器的27017端口映射到主机的27016端口时,应尝试从容器外部连接到updateCache()
。
答案 2 :(得分:0)
注意两点:
如果不是#1,则需要提供一个文件,该文件将在/docker-entrypoint-initdb.d/*.js
下创建数据库。下面是一个模板:
db.createUser(
{
user: "<user for database which shall be created>",
pwd: "<password of user>",
roles: [
{
role: "readWrite",
db: "<database to create>"
}
]
}
);
您可以在他们的官方docker hub image处获得更多推荐。部分: MONGO_INITDB_DATABASE 和初始化新实例