У нас есть выделенный сервер с Proxmox на OVH. Идея состоит в том, чтобы подключить контейнеры локально, а также через Интернет. Пока у меня есть 2 контейнера.
Я добавил мостовую сеть для локального IP, и это работает, так как я могу пропинговать контейнеры друг от друга.
Также добавлено bind-address=192.168.1.3
к моему.
1 контейнер работает под управлением apache + php 7.2 (192.168.1.3)
Другой контейнер работает под управлением MySQL. (192.168.1.2)
Мой MySQL продолжает говорить SQLSTATE[HY000] [2002] Connection timed out
Вот мой PHP-код:
<?php
/**
* Configuration for database connection
*
*/
$host = "192.168.1.2";
$username = "root";
$password = "root";
$dbname = "test";
$dsn = "mysql:host=$host;dbname=$dbname";
$options = array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
);
try
{
$connection = new PDO("mysql:host=$host", $username, $password, $options);
$sql = file_get_contents("data/init.sql");
$connection->exec($sql);
echo "Database and table users created successfully.";
}
catch(PDOException $error)
{
echo $sql . "<br>" . $error->getMessage();
}
Насколько я понимаю, код верен, поэтому он должен быть чем-то с моей конфигурацией mysql.
Я уверен, что это что-то действительно простое, но я теряю много времени с этим.
Пробовать telnet 192.168.1.2 3306
из контейнера Apache, PHP. Вы можете подключиться?
Убедитесь, что порт прослушивания для MySQL — 3306, в противном случае измените код PHP соответствующим образом. Также убедитесь, что iptables
не блокирует любые входящие соединения. Также убедитесь, что у вас есть правильные разрешения для root
и любые другие пользователи, вам нужно иметь разрешения от других хостов.
Кроме того, пожалуйста, проверьте при внесении любых изменений конфигурации в MySQL, что вы перезапустите службу.
После поиска вокруг некоторое время. Выяснил, что мне нужно создать нового пользователя и предоставить ему разрешения
mysql> CREATE USER 'monty'@'localhost' IDENTIFIED BY 'some_pass';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost'
-> WITH GRANT OPTION;
mysql> CREATE USER 'monty'@'%' IDENTIFIED BY 'some_pass';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%'
-> WITH GRANT OPTION;
Также на моем сервере конфигурации /etc/mysql/mariadb.conf.d/50-server.conf
Мне пришлось комментарий
bind-address = 192.168.1.3
в
#bind-address = 192.168.1.3
Затем перезапустите сервер MySQL и измените мои детали MySQL на моем php-коде с именем пользователя ‘monty’ и паролем ‘some_pass’