Mysql PDO / MySqli Connect From Linux Host - PullRequest
0 голосов
/ 30 января 2020

Мой хост DataBase и хост моего веб-сайта не совпадают.

Я создал несколько веб-приложений на. NET с файлом web.config или app.config, где я мог легко установить машинный ключ для соединения mysql в базе данных mysql для веб-фермы.

Это было очень просто для NET или веб-приложения Visual studio.

   <system.web>
 <machineKey validationKey="C250127840E44F50A34824E348FC089A0DE6C60C3D0CF61A31AB01BCAB6AE3940C82648D2F085B1DECFA5204AD393A5810403DABED73002608AEF7231F29E6CB" decryptionKey="8A86EB63181EDD9439D664ACA990D07302F3280E6F6919B3" validation="SHA1" decryption="AES"/>
</system.web>

Однако

Я сейчас создаю сайт для хоста Linux. Я использую ту же базу данных и снова, при тестировании, соединение в порядке. Однако при публикации соединение mysql отклоняется.

У меня есть подозрение, что это снова из-за веб-фермы, но нет никаких доказательств этого.

Я разрешил IP хоста на удаленном компьютере - mysql .

Я проверил, что IP-адрес хоста не заблокирован на Mysql хосте.

Я проверил порты для mysql соединение. (Работает до публикации sh).

Я проверил привилегии пользователя для mysql имени пользователя.

Я также отправил по почте парней из службы поддержки на моем mysql хосте, чтобы узнать, есть ли что-нибудь на их стороне.

Я сидел с этим некоторое время, и это расстраивает.

Есть ли способ, которым я могу установить ключ машины в этом приложении / это необходимо?

Если кто-нибудь предложит что-нибудь еще, что я мог бы проверить, или указать мне настройку, я могу будет отсутствовать, это было бы НАМНОГО признательно.

Ниже мое соединение, которое работает, когда я запускаю приложение.

Publi sh для хоста, Connection отказано.

<?php

    $host = "server IP";
    $port = 3306;
    $user = "username";
    $password = "**********";
    $dbname = "mysql.table";

    $conn = new mysqli($host, $user, $password, $dbname, $port);

    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    }

?>



<?php

 $host = 'DB_IP';
    $dbname = 'DB_Name';
    $dsn = 'mysql:host=DB_IP;dbname=DB_Name';
    $username = 'Username';
    $password = 'Password';


     try {
         $conn = new PDO($dsn, $username, $password);
         echo "Connected to $dbname at $host successfully.";
     } catch (PDOException $pe) {
         die("Could not connect to the database $dbname :" . $pe->getMessage());
     }    

  ?>

Это когда я тестирую код ::

Успешно подключен к mydb на IPADDRESS.

Это после публикации sh на хосте ::

Не удалось подключиться к базе данных mydb: SQLSTATE [HY000] [2002] Соединение отклонено

Я получаю то же самое результат с PDO и MySqli

Если кто-нибудь может помочь. Я искал ответы уже несколько дней.

Ответы [ 2 ]

0 голосов
/ 10 февраля 2020

Большое спасибо за помощь. Похоже, что хост, который я использовал для своей базы данных в течение почти 4 лет, решил заблокировать доступ 3306 к рабочему столу и удаленный доступ. Никаких уведомлений об этом.

Они решили, что уровень атаки на MySQL слишком высок. Теперь там работают только локальные и одни и те же хост-сайты. Это странно, потому что все мои другие проекты и верстак все еще соединяются. Я спорил с ними об этом, но они настаивают.

Мне придется перенести базу данных в другое место.

Сегодня утром я провел тест на другом хосте. Все работало отлично.

Еще раз спасибо за помощь.

0 голосов
/ 03 февраля 2020

Можете ли вы объяснить мне кое-что?

Какой linux дистрибутив / версия?

У вас есть два или три сервера? (MySQL сервер, сервер тестов и производственный сервер?)

Проверяли ли вы ufw / ip-таблицы или другое программное обеспечение "брандмауэра", которое вы могли установить?

Проверяли ли вы соединение с терминала? (что-то вроде nc -zv или что-то еще)

Я новичок в этом ... Я просто пытаюсь помочь ...

Извините за мой английский sh

...