gpt4 book ai didi

php - 无法使用 PHP 从主机登录 Docker MySQL

转载 作者:行者123 更新时间:2023-11-29 16:30:52 24 4
gpt4 key购买 nike

我希望在主机上运行 PHP 代码,以连接到 MySQL(使用 Docker 容器化)数据库。但我收到以下错误:

连接失败:MySQL 服务器已消失

在主机(Ubuntu 18.04 LTS)上我安装了以下软件:

PHP 7.2.10(非 Docker)
MySQL 8.0.13(Docker)
Apache 2.5.29(非 Docker)

我在主机上的程序中使用以下连接字符串:

<?php
$connection=mysqli_connect('127.0.0.1','vernemq','xyzw','some_db');
if (!$connection) {
die("Connection failed: " . mysqli_connect_error());
}
?>

注意:上面的程序是用PHP文件编写的,位于目录/var/www/html

为了便于理解,假设主机的 IP 地址为 172.10.10.15。

当在与主机位于同一网络的另一台计算机(IP 地址:172.10.10.16)上使用 LAMPP 服务器运行相同的程序时,我能够连接到 MySQL 服务器。我正在不同的机器上运行以下修改后的程序:

<?php
$connection=mysqli_connect('172.10.10.15','vernemq','xyzw','some_db');
if (!$connection) {
die("Connection failed: " . mysqli_connect_error());
}
?>

我什至可以通过在主机的命令提示符下运行以下命令来连接到主机上的 Dockerized MySQL 服务器:

$mysql -h 127.0.0.1 -u vernemq -p

从 MySQL 提示符运行以下命令将返回以下内容:

mysql> SELECT user, host FROM mysql.user
-> ;
+------------------+-----------+
| user | host |
+------------------+-----------+
| root | % |
| vernemq | % |
| mysql.infoschema | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
| vernemq | localhost |
+------------------+-----------+

有什么地方可能出问题吗?

更新 2019 年 4 月 1 日我注意到以下事情

当我从命令行运行数据库连接文件时,出现以下错误。

Getting following error when running the php file from the command prompt
PHP Warning: mysqli_connect(): Unexpected server respose while doing caching_sha2 auth: 109 in /var/www/html/db.php on line 2
PHP Warning: mysqli_connect(): MySQL server has gone away in /var/www/html/db.php on line 2
PHP Warning: mysqli_connect(): (HY000/2006): MySQL server has gone away in /var/www/html/db.php on line 2
Connection failed: MySQL server has gone away

为此,我使用以下命令将用户身份验证方法从 mysql_native 更改为 caching_sha2

ALTER USER 'vernemq' IDENTIFIED WITH caching_sha2_password BY 'vernemq';

它开始工作了。

但我不想使用 caching_sha2 身份验证,因为它会破坏另一个使用 native_mysql 身份验证方法的程序。出路何在?

最佳答案

可能您运行在 Mac OS 上,而 Docker for Mac 不提供 docker0 接口(interface),因此您需要创建一个网络别名:

sudo sudo ifconfig lo0 别名 10.10.0.10/24

之后尝试使用连接字符串10.10.0.10:3306,它应该可以工作。

关于php - 无法使用 PHP 从主机登录 Docker MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53931285/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com