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

Docker(v.2)环境下同一容器内新增MariaDB数据库的方法咨询

好的,针对你想在现有MariaDB容器内新增一个数据库的需求,我给你分享两种实用的方法:

方法一:通过初始化脚本让容器启动时自动创建(推荐用于需要持久化的新增库)

因为官方MariaDB镜像的MYSQL_DATABASE环境变量只能指定一个初始数据库,所以要自动创建多个库的话,我们可以用镜像自带的初始化脚本机制:

  1. 在你的docker-compose.yml所在目录,新建一个init文件夹,里面创建一个SQL脚本文件(比如create_new_db.sql),内容如下:
-- 创建名为new_test_db的数据库,如果不存在的话
CREATE DATABASE IF NOT EXISTS `new_test_db` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 可选:给现有test用户授予这个新库的全部权限,方便应用连接
GRANT ALL PRIVILEGES ON `new_test_db`.* TO 'test'@'%';
FLUSH PRIVILEGES;
  1. 修改你的docker-compose.yml,给mysql服务添加卷挂载,把本地的init目录挂载到容器的/docker-entrypoint-initdb.d路径(这个路径是镜像默认执行初始化脚本的地方):
mysql:
  image: mariadb:latest
  ports:
    - 3306:3306
  environment:
    MYSQL_ROOT_PASSWORD: 'test'
    MYSQL_DATABASE: 'test'
    MYSQL_USER: 'test'
    MYSQL_PASSWORD: 'test'
  volumes:
    - ./init:/docker-entrypoint-initdb.d  # 新增这一行
  1. 重启容器让配置生效:
docker-compose down && docker-compose up -d

注意:如果你的容器已经运行过(数据卷已存在),第一次挂载初始化脚本后,需要先删除原有数据卷才能让脚本执行,命令是docker-compose down -v(会删除所有关联卷,谨慎操作,确保数据已备份)。如果不想删除数据卷,直接用方法二更合适。

方法二:手动进入容器创建(适合临时新增或已有运行容器的情况)

如果你的容器已经在正常运行,不想重启或修改配置,直接手动创建更快捷:

  1. 进入运行中的MariaDB容器:
# 用docker-compose的服务名直接进入
docker-compose exec mysql bash
# 或者用容器ID/名称进入,先通过docker ps找到容器名
docker exec -it <你的容器名/ID> bash
  1. 登录MariaDB控制台,输入root密码test:
mysql -u root -p
  1. 执行SQL命令创建新数据库:
CREATE DATABASE IF NOT EXISTS new_test_db;
-- 可选:给test用户授权,方便你的应用使用这个库
GRANT ALL PRIVILEGES ON new_test_db.* TO 'test'@'%';
FLUSH PRIVILEGES;
  1. 依次输入exit退出mysql控制台和容器即可,这个新数据库会自动保存在容器的数据卷里,重启后不会丢失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 11:03:44