You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MongoDB容器创建后,如何通过Bash脚本自动创建新数据库与用户?

可以实现,具体方案如下

核心思路

利用docker exec直接调用容器内的MongoDB Shell(mongosh或旧版mongo),结合传入的参数执行创建数据库和用户的命令,全程无需手动登录Shell,完全通过脚本自动化完成。

1. 编写Bash脚本

创建名为create_mongo_db_user.sh的脚本,接收目标数据库名、新用户名、新用户密码三个参数,同时调用预先配置的管理员账号密码(推荐从环境变量读取,避免硬编码)。

#!/bin/bash

# 参数校验
if [ $# -ne 3 ]; then
    echo "用法: $0 <目标数据库名> <新用户名> <新用户密码>"
    exit 1
fi

# 赋值参数
TARGET_DB=$1
NEW_USER=$2
NEW_PASS=$3

# 从环境变量读取管理员凭据(部署容器时设置的)
ADMIN_USER=${MONGO_ADMIN_USER:-admin}
ADMIN_PASS=${MONGO_ADMIN_PASS:-your_admin_pass}
MONGO_CONTAINER="mongo-container" # 替换为你的容器名/ID

# 执行MongoDB创建命令
docker exec -i $MONGO_CONTAINER mongosh --username $ADMIN_USER --password $ADMIN_PASS --authenticationDatabase admin <<EOF
use $TARGET_DB
db.createUser({
  user: "$NEW_USER",
  pwd: "$NEW_PASS",
  roles: [{ role: "readWrite", db: "$TARGET_DB" }]
})
exit
EOF

# 检查执行结果
if [ $? -eq 0 ]; then
    echo "数据库 $TARGET_DB 和用户 $NEW_USER 创建成功"
else
    echo "创建失败,请检查容器状态或参数是否正确"
fi

2. 脚本使用步骤

  • 给脚本添加执行权限:
    chmod +x create_mongo_db_user.sh
    
  • 运行脚本(替换为实际参数):
    ./create_mongo_db_user.sh myapp_db app_user SecurePass123
    

关键注意事项

  • 替换脚本中的MONGO_CONTAINER为你的MongoDB容器实际名称或ID(可通过docker ps查看)
  • 管理员账号密码建议通过环境变量传递(比如执行export MONGO_ADMIN_USER=admin MONGO_ADMIN_PASS=xxx),不要硬编码在脚本里
  • 若使用MongoDB 5.0及以下版本,将脚本中的mongosh替换为mongo命令
  • 可根据需求调整用户角色,比如添加dbAdmin权限只需修改roles数组:{ role: "dbAdmin", db: "$TARGET_DB" }

内容的提问来源于stack exchange,提问作者batta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 07:55:20