首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在GitHub操作中将"mysql_native_password“传递给MySQL服务?

问如何在GitHub操作中将"mysql_native_password“传递给MySQL服务?
EN

Stack Overflow用户
提问于 2020-03-28 23:40:15
回答 2查看 3.7K关注 0票数 10

我的GitHub操作配置示例:

代码语言:javascript
复制
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中,它显示:

代码语言:javascript
复制
ERROR 1045 (28000): Plugin caching_sha2_password could not be loaded: ...

在MySQL docker文档中,有一行允许mysql_native_password身份验证:

代码语言:javascript
复制
command: --default-authentication-plugin=mysql_native_password

如何在GitHub操作/服务中允许mysql_native_password身份验证插件?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-07-04 01:59:40

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

经过大量的试验和错误,我发现,您可以指定env。vars手动执行,如下所示的命令有效:

代码语言:javascript
复制
...
    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:
...
票数 11
EN

Stack Overflow用户

发布于 2020-06-30 14:51:14

目前还不能在github actions服务工作流语法中指定命令选项,一个更简单的替代方案是使用不同的mysql镜像并覆盖入口点以使用本地密码,或者使用现有的镜像,该镜像使用环境变量提供配置auth方法,如此bitnami mysql镜像。

使用bitnami mysql镜像:

代码语言:javascript
复制
    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
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60902904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档