Docker 安装 MongoDB
官方镜像:https://hub.docker.com/_/mongo
Github: https://github.com/mongodb/mongo
shell
$ docker run \
--name mongo \
--restart=unless-stopped \
-p 27017:27017 \
-e MONGO_INITDB_ROOT_USERNAME=admin \
-e MONGO_INITDB_ROOT_PASSWORD=123456 \
-d mongo:4.4.17命令说明:
-e MONGO_INITDB_ROOT_USERNAME:管理员账号-e MONGO_INITDB_ROOT_PASSWORD:管理员密码
shell
# 进入容器
docker exec -it mongo /bin/bash
# 打开 mongo 命令行
> mongo
> use admin
> db.auth('admin', '123456');
> use aaadb
> db.createUser({user: "aaa",pwd: "123456",roles: [ { role: "dbOwner", db: "aaadb" } ]});
# show dbs 要看到使用 use aaadb; 创建的数据库,需要插入至少一个数据才能查到。
# 简单插入空文档
> db.dummy.insertOne({});
# 现在就可以查到创建的 aaadb 数据库了。
> show dbs;url 连接格式
shell
# admin 用户
mongodb://admin:123456@127.0.0.1:27017/aaadb?authSource=aaadb&authMechanism=SCRAM-SHA-1
# 自己创建的 aaa 用户
mongodb://aaa:123456@127.0.0.1:27017/aaadb?authSource=aaadb&authMechanism=SCRAM-SHA-1连接字符串结构解析
shell
mongodb://admin:123456@127.0.0.1:27017/aaadb?authSource=aaadb&authMechanism=SCRAM-SHA-1| 组成部分 | 说明 |
|---|---|
mongodb:// | MongoDB连接协议前缀 |
admin:123456 | 认证信息:用户名admin,密码123456 |
@127.0.0.1:27017 | 服务器地址:本地IP,默认MongoDB端口27017 |
/aaadb | 要连接的目标数据库名称 |
?authSource=aaadb | 身份验证数据库(用户凭证存储的数据库) |
&authMechanism=SCRAM-SHA-1 | 认证机制:使用SCRAM-SHA-1加密方式 |
关键参数详解
1. 认证数据库 (authSource)
authSource=aaadb表示用户admin是在aaadb数据库中创建的- 这与要连接的数据库名称相同,说明是数据库专属用户。
- 如果用户创建在
admin数据库,这里应该是authSource=admin
2. 认证机制 (authMechanism)
SCRAM-SHA-1是MongoDB的传统认证机制- 现代MongoDB版本默认使用更安全的
SCRAM-SHA-256 - 这个参数通常可以省略,MongoDB会自动协商最佳机制
命令行连接
bash
# 进入容器
docker exec -it mongo /bin/bash
# 使用 mongosh (MongoDB Shell)
mongosh "mongodb://admin:123456@127.0.0.1:27017/aaadb?authSource=aaadb"
# 或者使用旧版 mongo shell
mongo "mongodb://admin:123456@127.0.0.1:27017/aaadb?authSource=aaadb"重要注意事项
用户必须存在:确保在
aaadb数据库中已经创建了用户adminjavascriptuse aaadb db.createUser({ user: "admin", pwd: "123456", roles: [{ role: "readWrite", db: "aaadb" }] })安全建议:
- 生产环境使用更强的密码
- 考虑使用
SCRAM-SHA-256认证机制 - 建议用户创建在
admin数据库而非应用数据库
