Skip to content

MongoDB 数据库

MongoDB 安装

初始化

1. 进入 MongoDB 容器

bash
docker exec -it <容器ID或名> mongosh
# 或旧版本 MongoDB 使用:
# docker exec -it <容器ID或名称> mongo

2. 创建管理员用户(可选,但推荐)

如果容器启动时未设置管理员用户,需先创建一个:

javascript
use admin
db.createUser({
  user: "admin",
  pwd: "your_admin_password",
  roles: [{ role: "root", db: "admin" }]
})

3. 创建数据库和用户

假设要创建名为 mydb 的数据库,并设置用户 user1(密码 password123):

javascript
use mydb

db.createUser({
  user: "user1",
  pwd: "password123",
  roles: [
    { role: "readWrite", db: "mydb" },  // 允许读写权限
    { role: "dbAdmin", db: "mydb" }     // 允许管理数据库
  ]
})

4. 验证用户权限

退出当前会话,使用新用户登录测试:

bash
docker exec -it <容器ID或名> mongosh mydb -u user1 -p password123

5. 启用认证(重要!)

如果容器启动时未启用认证,需在 docker run 命令中添加以下参数:

bash
docker run -d \
  --name mongodb \
  -e MONGO_INITDB_ROOT_USERNAME=admin \
  -e MONGO_INITDB_ROOT_PASSWORD=admin123 \
  -p 27017:27017 \
  -v mongodb_data:/data/db \
  mongo

6. 持久化数据

确保通过 -v 参数挂载卷,避免容器删除后数据丢失:

bash
# 启动容器(带认证和持久化)
docker run -d \
  --name mongodb \
  -e MONGO_INITDB_ROOT_USERNAME=admin \
  -e MONGO_INITDB_ROOT_PASSWORD=admin123 \
  -p 27017:27017 \
  -v mongodb_data:/data/db \
  mongo

# 进入容器创建用户
docker exec -it mongodb mongosh admin -u admin -p admin123

远程连接或启用认证

bash
mongosh "mongodb://用户名:密码@主机地址:端口/数据库名"
# 示例:
mongosh "mongodb://admin:admin123@localhost:27017/mydb"

注意事项

  • 生产环境务必启用认证(--auth 或环境变量)。
  • 使用强密码,避免使用默认端口(27017)直接暴露到公网。
  • 可通过 docker-compose.yml 简化配置。

插入数据触发数据库创建

向集合中插入一条数据,数据库会自动创建:

javascript
db.myCollection.insertOne({ name: "Test", value: 1 })

// 验证数据库是否创建
show dbs
最近更新