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)
我看到还有其他 post 关于这些问题,但没有关于下面描述的特定 cific 案例。
在我的 gitlab-ci 测试管道配置中,我想 运行 a mysql docker,并直接从我的 运行ner 连接到它。但是我很难连接到数据库。
这是我的 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
个连接期间:
ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (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
编辑:
ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (111)
发生错误是因为您尝试连接到 localhost
而不是 mysql 服务。默认情况下,服务具有 GitLab 默认创建的别名。 Learn More in the docs.
如果您需要多个 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.
我看到还有其他 post 关于这些问题,但没有关于下面描述的特定 cific 案例。 在我的 gitlab-ci 测试管道配置中,我想 运行 a mysql docker,并直接从我的 运行ner 连接到它。但是我很难连接到数据库。 这是我的 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
个连接期间:
ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (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
编辑:
ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (111)
发生错误是因为您尝试连接到 localhost
而不是 mysql 服务。默认情况下,服务具有 GitLab 默认创建的别名。 Learn More in the docs.
如果您需要多个 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.