我在docker容器中创建了一个mongodb示例,我正在努力获得一个连接来更改数据库中的任何内容。有没有人有一个提示,什么可能是错的?
下面是docker run命令:
# Start the docker container
echo "mongodb password in file" $(pwd)/mongodb.pass
docker run \
-p 27017:27017 \
--restart unless-stopped \
--name mongodb \
-v airlist:/data/db \
-v $(pwd)/mongodb.pass:/mongodb.pass \
-d \
--network airfetch \
-e MONGO_INITDB_ROOT_USERNAME=airfetch \
-e MONGO_INITDB_ROOT_PASSWORD=airlist27101978 \
mongo:latest
字符串
使用这个docker容器,我想访问数据库。我在docker容器的主机上运行这个python脚本。由于端口是公开的,因此这应该可以工作。实际上,当我只传递auth_string=mongodb://localhost:27017
时,我会从server_info
方法得到一个响应,但不能插入任何记录或数据库。
import pymongo
import urllib.parse
username = urllib.parse.quote_plus('airfetch')
password = urllib.parse.quote_plus('airlist27101978')
auth_db = 'admin'
auth_source='?authSource=admin&retryWrites=true&w=majority'
auth_string = f"mongodb://{username}:{password}@localhost:27017/{auth_db}{auth_source}"
myclient = pymongo.MongoClient(auth_string)
型
但是,我得到错误消息:
pymongo.errors.OperationFailure: Authentication failed., full error: {'ok': 0.0, 'errmsg': 'Authentication failed.', 'code': 18, 'codeName': 'AuthenticationFailed'}
型
2条答案
按热度按时间jdgnovmf1#
您需要添加authsource:
?authSource=admin&retryWrites=true&w=majority:
出发地:
字符串
收件人:
型
ghg1uchk2#
我发现了问题:我更改密码后没有删除卷。显然,凭证存储在容器中的
data/db
中。