GitHub Workflow CI中MariaDB容器初始化失败求助
解决GitHub Workflow中MariaDB启动失败问题
问题根源
从报错日志里的核心错误ERROR 1396 (HY000) at line 25: Operation CREATE USER failed for 'root'@'%'可以明确:MariaDB初始化脚本尝试创建root用户,但该用户是数据库内置的超级用户,默认已存在,重复创建导致初始化流程失败。
你在Workflow中同时配置了MARIADB_USER=root和MARIADB_ROOT_PASSWORD,触发了entrypoint脚本的新用户创建逻辑,但root用户不需要额外创建。
修复方案
- 移除
MARIADB_USER和MARIADB_PASSWORD两个环境变量,仅保留MARIADB_ROOT_PASSWORD和MARIADB_DATABASE——root用户默认拥有所有数据库的访问权限,无需重复配置。 - 调整健康检查命令,指定root用户和密码,确保健康检查能成功连接数据库,避免GitHub Actions误判服务未就绪。
修改后的Workflow配置
name: ci on: pull_request: branches: - main jobs: build: runs-on: ubuntu-latest services: mariadb: image: mariadb:latest ports: - 3306:3306 env: MARIADB_DATABASE: db MARIADB_ROOT_PASSWORD: password options: --health-cmd="healthcheck.sh --connect --user=root --password=password --innodb_initialized" --health-interval=10s --health-timeout=5s --health-retries=3 steps: - name: Checkout code uses: actions/checkout@v2 - name: Set up Node.js uses: actions/setup-node@v2 with: node-version: 18.18.0 - name: Install dependencies run: npm install - name: Run app run: npm start - name: Run integration tests run: npm test
额外说明
如果你的应用需要用非root用户连接数据库,应创建普通用户(例如appuser),配置MARIADB_USER=appuser和MARIADB_PASSWORD=xxx,而非复用root用户。
内容的提问来源于stack exchange,提问作者Anna
相关产品推荐
相关产品推荐

