Azure Виртуальная машина - Нет доступа к базе данных MySQL - PullRequest
1 голос
/ 10 марта 2020

Я создал и настроил виртуальную машину в Azure Portal как мой MySQL Сервер. В этот момент я могу получить доступ к своей базе данных с помощью PHPMyAdmin. Однако, пытаясь подключить его с помощью сценария PHP или кода Virtual Studio, я получаю сообщение об ошибке подключения.

Мой PHP сценарий:

$mysqli = new mysqli('valicon.brazilsouth.cloudapp.azure.com:3306', 'myuser', 'mypassword', 'mydatabase');

if ($mysqli->connect_error) {
    die('Connect Error (' . $mysqli->connect_errno . ') '
            . $mysqli->connect_error);
}
echo '<p>Connection OK '. $mysqli->host_info.'</p>';
echo '<p>Server '.$mysqli->server_info.'</p>';
$mysqli->close();

Ошибка Я Получение:

Ошибка подключения (2002) Попытка подключения не удалась, потому что подключенная сторона не ответила должным образом через некоторое время, или не удалось установить соединение, так как подключенный хост не смог ответить.

Моя строка подключения в файле web.config (Visual Studio):

<add name="MySQLConnection" 
         providerName="MySql.Data.MySqlClient" 
    connectionString="server=valicon.brazilsouth.cloudapp.azure.com; user id=myuser; Password=mypassword; database=mydatabase; SslMode=none" />

Я получаю ошибку:

MySql .Data.MySqlClient .MySqlException: невозможно подключиться к любому из указанных MySQL хостов.

Что мне не хватает? Почему я могу получить доступ к своей базе данных и управлять ею с помощью PHPMyAdmin, но не могу подключить ее к проекту PHP или ASP. NET?

ОБНОВЛЕНИЕ

Я добавляю правило подключения к моей настройке виртуальной машины, которое открывает порт 3306 для внешнего подключения. Теперь я получаю еще одну ошибку из сценария PHP:

Невозможно установить соединение, поскольку целевая машина активно отказала ему.

1 Ответ

0 голосов
/ 11 марта 2020

Я выяснил, в чем проблема. Итак, для тех, кто заинтересован, я оставлю ответ здесь.

Я не смог подключиться к базе данных удаленно через PHP или ASP. NET код, потому что 'bind-address' переменная в конфигурации MySQL была установлена ​​со значением 127.0.0.1. Это означает, что только localhost может подключиться.

Итак, комментируя строку

bind-address = 127.0.0.1

в файле /etc/mysql/mysql.conf.d/mysqld.cnf (Linux Ubuntu 18.04), я мог бы открыть соединение с любым IP-адресом.

Так как PHPMyAdmin работает локально, он может подключаться к базе данных даже с 'bind-address', установленным как 127.0.0.1.

...