繁体   English   中英

Gitlab-ci 运行 mysql docker 并连接错误 ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (111)

[英]Gitlab-ci running mysql docker and connect it with error ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (111)

我看到了关于这些问题的其他帖子,但没有针对下面描述的具体案例。 在我的 gitlab-ci 测试管道配置中,我想运行 mysql docker,并直接从我的运行器连接到它。 但是我很难连接到数据库。 这是我的 gitlab-cy-yml 测试步骤:

services:
    - docker:dind
    - mysql:5.7
  script:
     - apt-get update && apt-get install -y git curl libmcrypt-dev default-mysql-client
     - mysql --version
     - sleep 20
     - docker login -u XXXXXXXX -p XXXXXXXXX
     - docker pull mysql:5.7
     - docker run --name ticketsDB -d -p 3304:3306 -it -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql:5.7
     - mysql --protocol=tcp -u root -P 3304
     - create database ticketOnline;
     - use ticketOnline;

错误是在mysql --protocol=tcp -u root -P 3304 connections期间:

错误 2003 (HY000):无法连接到“本地主机”上的 MySQL 服务器 (111)

我哪里做错了?

在您的设置中不需要docker:dind服务。

job:
  variables:
    MYSQL_ALLOW_EMPTY_PASSWORD: "true"
    MYSQL_DATABASE: ticketsDB
  services:
    - mysql:5.7
  script:
     - apt-get update && apt-get install -y git curl libmcrypt-dev default-mysql-client
     - mysql --version
     - sleep 20
     - mysql --protocol=tcp -u root -P 3304 -h mysql -e "create database ticketOnline; use ticketOnline;"
     
     # -h to specify the host and -e to run a SQL query

编辑:

错误 2003 (HY000):无法连接到“本地主机”上的 MySQL 服务器 (111)

发生错误是因为您尝试连接到localhost而不是 mysql 服务。 默认情况下,服务具有默认由 GitLab 创建的别名。 在文档中了解更多信息

如果您需要多个 mysql 实例,您可以像这样使用多个别名:

services:
    - name: mysql:5.7
      alias: mysql-1
    - name: mysql:5.7
      alias: mysql-2
script: 
  - mysql mysql --protocol=tcp -u root -P 3304 -h mysql-1 # to connect to the first
  - mysql --protocol=tcp -u root -P 3304 -h mysql-2 # to connect to the second.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM