如何通过;mysql“本地”密码;在GitHub操作中连接到MySQL服务?

如何通过;mysql“本地”密码;在GitHub操作中连接到MySQL服务?,mysql,docker,github-actions,Mysql,Docker,Github Actions,我的GitHub操作配置示例: jobs: unit-test: name: Unit Testing runs-on: ubuntu-latest services: mysql: image: mysql:8.0 env: MYSQL_ROOT_PASSWORD: password MYSQL_DATABASE: db options: --health-cmd="

我的GitHub操作配置示例:

jobs:
  unit-test:
    name: Unit Testing
    runs-on: ubuntu-latest
    services:
      mysql:
        image: mysql:8.0
        env:
          MYSQL_ROOT_PASSWORD: password
          MYSQL_DATABASE: db
        options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=5
    steps:
      - name: Verify MySQL connection from host
        run: mysql --host mysql --port 3306 -uroot -ppassword -e "SHOW DATABASES"
在MySQL 5.7中,它可以正常工作。但MySQL 8.0显示:

ERROR 1045 (28000): Plugin caching_sha2_password could not be loaded: ...
在MySQL docker文档中,有一行允许
MySQL\u native\u密码
auth:

command: --default-authentication-plugin=mysql_native_password

如何允许GitHub操作/服务中的
mysql\u native\u密码
auth插件?

目前无法在GitHub操作服务工作流语法中指定命令选项,一个更简单的替代方法是使用不同的mysql映像并覆盖入口点以使用本机密码,或者使用现有映像,该映像提供了使用诸如此bitnami mysql映像之类的环境变量配置auth方法

使用bitnami mysql映像:

    services:
      mysql:
        image: bitnami/mysql:8.0.20
        env:
          ALLOW_EMPTY_PASSWORD: yes
          MYSQL_DATABASE: abc
          MYSQL_AUTHENTICATION_PLUGIN: mysql_native_password
        ports:
          - 3306/tcp
        options: >-
          --health-cmd="mysqladmin ping" 
          --health-interval=10s 
          --health-timeout=5s 
          --health-retries=3

问题在于,GH操作不会将
--entrypoint
选项和相关参数移动到命令末尾,而是附加了其他选项,如env。在其后面的
env
service
部分中指定的变量

在我发现了大量的尝试和错误之后,您可以指定env。手动VAR,这样的命令正在工作:

...
    services:
      mysql:
        image: mysql:8
        options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=5 -e MYSQL_ROOT_PASSWORD=xxx -e MYSQL_USER=xxx -e MYSQL_PASSWORD=xxx -e MYSQL_DATABASE=xxx --entrypoint sh mysql:8 -c "exec docker-entrypoint.sh mysqld --default-authentication-plugin=mysql_native_password"
    steps:
...

你找到答案了吗@mvorisek@mdegis不幸的是,没有,仍然在寻找有聪明解决方案的人:)嘿,你解决了这个问题吗,你是如何解决这个问题的?因为没有人向GitHub提出这个问题,所以我将它添加到了。看起来这个插件也可以与原始SQL一起使用。如果我能让它工作的话,我将用标准文件夹结构中的一个SQL文件来做一个替代答案。