Github 操作:使用 mysql 服务会引发用户“root”@“localhost”的访问被拒绝

Tho*_*sen 9 github github-actions

错误,用户 'root'@'localhost' 访问被拒绝(使用密码:YES) 我试图在 Github Actions 中使用 mysql 服务,但没有运气。我收到以下错误

用户 'root'@'localhost' 访问被拒绝(使用密码:YES)

我的工作如下:

test:
  name: Test
  needs: install
  services:
    mysql:
      image: mysql:8.0
      ports:
        - '8888:3306'
      env:
        MYSQL_ROOT_PASSWORD: rootpass
        MYSQL_DATABASE: test
  runs-on: ubuntu-latest
  steps:
    - uses: actions/checkout@master
    - uses: actions/setup-node@master
      with:
        node-version: '10.x'
    - run: mysql --port 8888 -u root -prootpass -e 'CREATE DATABASE IF NOT EXISTS test;'
Run Code Online (Sandbox Code Playgroud)

我似乎无法让它工作。任何帮助表示赞赏。可以在此处找到我的测试设置存储库的拉取请求:https : //github.com/morsby/medmcq/pull/399

pet*_*ans 8

我花了一些时间尝试不同的东西来让它发挥作用。我找到了一个解决方案,但老实说,我不确定它为什么有效。我只是-h 127.0.0.1在mysql命令中添加了。

我还添加了健康检查标志以options确保服务能够接受请求。

这是一个工作流程:

name: CI
on: push
jobs:
  build:
    runs-on: ubuntu-latest
    services:
      mysql:
        image: mysql:8.0
        env:
          MYSQL_ROOT_PASSWORD: password
          MYSQL_DATABASE: test
        ports:
            - '8888:3306'
        options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
    steps:
      - uses: actions/checkout@v1
      - run: mysql -h 127.0.0.1 --port 8888 -u root -ppassword -e 'CREATE DATABASE IF NOT EXISTS test;'
Run Code Online (Sandbox Code Playgroud)

  • 这是必需的,因为 MySQL 中有一个奇怪的历史特性,其中“localhost”(默认值)表示本地 UNIX 套接字连接,而“127.0.0.1”是 TCP/IP 连接。 (4认同)