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

在GitHub Actions中使用WP-CLI安装WordPress时数据库连接失败

问题

我正在学习GitHub Actions,尝试通过WP-CLI安装WordPress,以下是我的Workflow YAML文件:

name: WordPress install

on: [workflow_dispatch]

jobs:
  run:    
    runs-on: ${{ matrix.operating-system }}
    strategy:      
      matrix:
        operating-system: [ubuntu-latest]
        php-versions: ['7.2']
    name: PHP ${{ matrix.php-versions }} Test on ${{ matrix.operating-system }}
    steps:
    - name: Checkout
      uses: actions/checkout@v1

    - name: Setup PHP
      uses: shivammathur/setup-php@v1
      with:
        php-version: ${{ matrix.php-versions }}
        extension-csv: mbstring, intl #optional, setup extensions
        ini-values-csv: post_max_size=256M, short_open_tag=On #optional, setup php.ini configuration
        coverage: xdebug #optional, setup coverage driver
        pecl: false #optional, setup PECL
        
    -   name: Set up MySQL
        run: |
            sudo /etc/init.d/mysql start
            
    -   name: Install wp
        run: |
            curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
            php wp-cli.phar core download
            echo 1
            php wp-cli.phar config create --dbname=wordpress_test --dbuser=root --dbpass=root --dbhost=127.0.0.1 --dbprefix=wptests_
            echo 2
            php wp-cli.phar db create
            php wp-cli.phar db check
            echo 30
            mysql --user="root" --password="root" --execute='show databases;'
            echo 31
            php wp-cli.phar db query 'SHOW TABLES' --allow-root
            echo 32
            php wp-cli.phar db tables
            echo 3
            php wp-cli.phar core install --url=wpclidemo.dev --title="WP-CLI" --admin_user=wpcli --admin_password=wpcli --admin_email=info@wp-cli.org
            echo 4
            php wp-cli.phar option get siteurl
            echo 5

执行后控制台输出如下:

Success: WordPress downloaded.
1
Success: Generated 'wp-config.php' file.
2
Success: Database created.
Success: Database checked.
30
Warning: Using a password on the command line interface can be insecure.
Database
information_schema
mysql
performance_schema
sys
wordpress_test
31
32
Error: Error establishing a database connection.
Error: Process completed with exit code 1.

可见直接通过mysql命令可正常查看数据库,但WP-CLI执行数据库相关命令时出现“Error establishing a database connection”错误,且该流程在本地环境可正常运行,请问该错误的原因是什么?

原因分析与解决办法

核心原因

GitHub Actions的Ubuntu runner环境中,MySQL的root用户权限配置与本地环境存在差异:

  • 你手动执行mysql --user="root" --password="root"时,默认通过Unix socket连接数据库,此时该环境的root用户验证规则允许使用root密码登录;
  • 而WP-CLI配置中指定--dbhost=127.0.0.1,会通过TCP/IP协议连接数据库,该环境下的root用户未被授权通过TCP/IP使用root密码登录,导致连接失败。

解决办法

有两种可行的修复方案:

方案1:统一数据库连接方式

将wp-cli.phar config create命令中的--dbhost=127.0.0.1改为--dbhost=localhost,让WP-CLI使用Unix socket连接数据库,和手动执行mysql命令的连接方式保持一致:

php wp-cli.phar config create --dbname=wordpress_test --dbuser=root --dbpass=root --dbhost=localhost --dbprefix=wptests_

方案2:授权root用户TCP/IP登录

在启动MySQL后添加授权命令,允许root用户从127.0.0.1使用密码root登录:
修改Set up MySQL步骤的命令为:

sudo /etc/init.d/mysql start
mysql --user="root" --password="root" --execute="GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' IDENTIFIED BY 'root' WITH GRANT OPTION; FLUSH PRIVILEGES;"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 14:45:36