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

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用户不需要额外创建。

修复方案

  1. 移除MARIADB_USER和MARIADB_PASSWORD两个环境变量,仅保留MARIADB_ROOT_PASSWORD和MARIADB_DATABASE——root用户默认拥有所有数据库的访问权限,无需重复配置。
  2. 调整健康检查命令,指定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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 07:58:16