MongoDB Docker容器默认账号密码及启动配置方法咨询
解决MongoDB Docker容器认证连接问题
1. 你的启动命令失败原因
你之前的命令错误地将环境变量参数放在了镜像名之后,Docker会把镜像名后的内容当作容器内要执行的命令,覆盖了MongoDB的默认启动逻辑,导致容器无法正常启动。Docker的参数(如-e、-p、--name等)必须放在镜像名称之前。
2. 正确的带认证启动命令
使用以下命令启动容器,将环境变量参数放在镜像名前:
docker run --name mongodb -p 27017:27017 -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=password -d mongodb/mongodb-community-server:latest
MONGO_INITDB_ROOT_USERNAME:设置MongoDB的超级管理员用户名MONGO_INITDB_ROOT_PASSWORD:设置超级管理员的密码
这两个环境变量会触发镜像内置的初始化脚本,自动在admin数据库中创建对应的管理员账号。
3. 验证带认证的连接
命令行验证
使用mongosh连接时,需要指定认证数据库(管理员账号存储在admin库):
mongosh "mongodb://admin:password@localhost:27017/" --authenticationDatabase admin
Java代码连接
Java连接串需要显式指定认证源(authSource参数),否则会默认去连接的目标数据库查找用户,导致认证失败:
MongoClient mongoClient = MongoClients.create("mongodb://admin:password@localhost:27017/?authSource=admin");
4. 关于默认用户名密码
官方的mongodb/mongodb-community-server镜像没有预设的默认用户名和密码,如果不设置上述环境变量,数据库会以无认证模式运行,任何人都可以直接连接。
内容的提问来源于stack exchange,提问作者sachin p
相关产品推荐
相关产品推荐

