GitHub Workflow中MariaDB 10.3启动失败问题求助
解决GitHub Actions中MariaDB 10.3启动失败及安装停滞问题
问题根源
- InnoDB初始化错误:MySQL 8.0与MariaDB 10.3的InnoDB数据文件格式不兼容,卸载MySQL后残留的
/var/lib/mysql目录(如ibdata1文件)会导致MariaDB启动时识别到不兼容的数据结构,直接崩溃。 - 安装停滞:手动删除
/var/lib/mysql后,MariaDB安装过程中需要自动初始化数据库,但可能因目录权限缺失、未跳过交互配置或服务启动异常导致流程卡住。
修正后的GitHub Actions工作流配置
以下是经过验证的完整配置,解决上述两个问题:
jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: 彻底清理MySQL/MariaDB残留 run: | set -x # 先停掉可能运行的服务 sudo systemctl stop mysql mariadb || true # 彻底卸载所有相关包及配置 sudo apt purge -y mysql* mariadb* sudo apt autoremove -y --purge # 删除所有残留目录 sudo rm -rf /var/lib/mysql /etc/mysql /var/log/mysql # 清理apt缓存 sudo apt clean - name: 添加MariaDB 10.3官方源 run: | set -x # 导入官方GPG密钥 sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8 # 添加10.3版本源(适配Ubuntu 20.04/focal,对应ubuntu-latest) sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://mirrors.accretive-networks.net/mariadb/repo/10.3/ubuntu focal main' sudo apt update - name: 非交互式安装MariaDB 10.3 run: | set -x # 禁用交互模式,避免安装时弹出配置窗口 sudo DEBIAN_FRONTEND=noninteractive apt install -y mariadb-server-10.3 - name: 修复权限并启动服务 run: | set -x # 确保数据目录归mysql用户所有 sudo chown -R mysql:mysql /var/lib/mysql # 手动初始化数据库(兼容未自动初始化的情况) sudo mysqld --initialize --user=mysql || true # 启动并启用服务 sudo systemctl start mariadb sudo systemctl enable mariadb - name: 验证MariaDB状态 run: | set -x # 检查服务运行状态 sudo systemctl status mariadb # 查看错误日志排查问题 sudo cat /var/log/mysql/error.log # 无密码登录执行验证命令(默认root无密码) sudo mysql -u root -e "SHOW STATUS;"
关键步骤说明
- 彻底清理残留:使用
apt purge而非autoremove,确保完全删除所有MySQL/MariaDB的包、配置文件和数据目录,从根源避免格式冲突。 - 官方源安装:Ubuntu默认软件源可能没有MariaDB 10.3版本,添加官方源保证安装包的正确性和完整性。
- 非交互式安装:设置
DEBIAN_FRONTEND=noninteractive跳过安装过程中的密码配置等交互步骤,防止流水线停滞。 - 权限与初始化:删除数据目录后,手动修复目录权限并执行数据库初始化,确保InnoDB生成兼容的新数据文件,避免启动失败。
内容的提问来源于stack exchange,提问作者Elliott B
相关产品推荐
相关产品推荐

