【发布时间】:2019-01-27 21:37:43
【问题描述】:
尝试从 php:latest 映像(没有 apache 或 nginx)连接到 mysql 8 (mysql:latest),我收到了这个烦人的错误:
Fatal error: Uncaught PDOException: SQLSTATE[HY000] [2002] Connection refused in /src/conn.php:5
Stack trace:
#0 /src/conn.php(5): PDO->__construct('mysql:host=data...', 'root', '12345678')
#1 {main}
thrown in /src/conn.php on line 5
我在 stackoverflow 上找到了 +20 个解决方案,但没有一个能够解决我的问题。我可以使用以下凭据使用 mysql 工作台或 DataGrid 毫无问题地连接:
服务器:本地主机用户:root 密码:12345678
但是我在 php 图像上使用的任何配置都无法使它们相互连接。
我的 docker-compose 文件:
version: '3'
services:
composer:
container_name: composer
networks:
- backend
image: composer
volumes:
- .:/app
command: install
database:
container_name: mysql
networks:
- backend
image: mysql:latest
volumes:
- ./database/mysqldata:/var/lib/mysql
command: --default-authentication-plugin=mysql_native_password
environment:
MYSQL_ROOT_PASSWORD: 12345678
MYSQL_DATABASE: testdb
ports:
- "3306:3306"
php:
build:
context: .
container_name: php
networks:
- backend
image: php:apache
links:
- database
env_file:
- .env
volumes:
- .:/
command:
php /src/conn.php
depends_on:
- composer
- database
networks:
backend:
我的 conn.php:
<?php
$db = new PDO('mysql:host=database;dbname=testdb', 'root', '12345678');
到目前为止我为解决问题所做的工作:
- 将 conn.php 主机改为 127.0.0.1
- 将 conn.php 主机更改为 localhost
- 尝试使用 mysqli(连接也被拒绝)
- 尝试了另一个 php 图片(使用 apache、nginx 等)
- 尝试使用mysql作为主机
PS:我正在使用 docker for mac
经过 5 个小时的研究,我真的不知道还能做什么,而且由于我不是 docker 专家,如果能帮助我指出修复的方向,我将不胜感激。
谢谢!
【问题讨论】:
-
你可以试试
127.0.0.1:3306或localhost:3306吗? -
@OmerTekbiyik 得到一个不同的错误:致命错误:未捕获的 PDOException:SQLSTATE[HY000] [2002] 无法在 /src/conn.php:5 中分配请求的地址