Я хочу запустить 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.
При запуске этой же программы с сервером LAMPP на другом компьютере (IP-адрес: 172.10.10.16) в той же сети, что и хост, я могуподключиться к серверу 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 |
+------------------+-----------+
Любой указатель на то, что может быть не так?
Обновление 04/01/2019 Я отметил следующие вещи
Когда я запустил файл соединения db из командной строки, я получил следующую ошибку.
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.Какой выход?