MySQLi real_connect Failed - PullRequest
       22

MySQLi real_connect Failed

0 голосов
/ 20 сентября 2018

Я не могу соединить базу данных MySQL (которая существует на другом сервере) с SSL в приведенном ниже коде PHP.Я попробовал шаги по ссылке: https://docs.microsoft.com/en-us/azure/mysql/howto-configure-ssl

Может кто-нибудь посоветовать мне, что нужно сделать из этих шагов?

К вашему сведению, я могу подключить базу данных MySQL из командной строки.

Не удалось подключиться к MySQL: php_network_getaddresses: getaddrinfo Ошибка: имя или служба не известны

    $db = mysqli_init();
    //mysqli_options ($db, MYSQLI_OPT_SSL_VERIFY_SERVER_CERT, true);
    mysqli_ssl_set($db,"/var/www/html/path/cert/client-key.pem","/var/www/html/path/cert/client-cert.pem","/var/www/html/path/BaltimoreCyberTrustRoot.crt.pem",NULL,NULL);
    $c=mysqli_real_connect($db, 'example.com','uname@uname','mypassword','database',3306,NULL, MYSQLI_CLIENT_SSL);
    if(mysqli_connect_errno($db)){
     echo "<br>Failed to connect to MySQL: " . mysqli_connect_error();
    }
    else
    {
    $sql = 'show tables ';
    echo $sql.'<br>';
    $result = mysqli_query($db,$sql); 
    $rows = array();
    if(!empty($result)){
                while ($row = mysqli_fetch_assoc($result)){
                $rows[] = $row;
                echo '<pre>'; echo json_encode($row, JSON_PRETTY_PRINT);
                }
          }
    }

1 Ответ

0 голосов
/ 21 сентября 2018

Вы пытаетесь это сделать в Azure?Убедитесь, что файл pem имеет правильный путь и разрешение

Что нужно исправить при подключении базы данных:

  1. Загрузите этот ключ pem и переименуйте файл " BaltimoreCyberTrustRoot.crt.pem"https://www.digicert.com/CACerts/BaltimoreCyberTrustRoot.crt.pem

  2. Включить SSL-соединение на сервере Azure.

  3. Непосредственно выполнить команду MySQL« status »в базе данных и проверить SSL: используется шифр AES256-SHA
  4. Добавьте приведенный ниже код в тестовый файл и убедитесь, что имя хоста, имя пользователя, пароль, порт и путь и разрешение файла pem очень правильные.

Попробуйте следующий пример кода:

    {
$db = mysqli_init();  mysqli_ssl_set($db,NULL,NULL,"/var/www/html/path/BaltimoreCyberTrustRoot.crt.pem",NULL,NULL);
$connection = mysqli_real_connect($db, 'example.com','uname@uname','mypassword','database_name',3306,NULL, MYSQLI_CLIENT_SSL);


   if(mysqli_connect_errno($db))
   { 
echo "<br><b>Failed to connect to MySQL: " . mysqli_connect_error()."<b>";
   } 
else
   {
   $sql = 'show tables ';
   $result = mysqli_query($db,$sql);
   $rows = array();
   if(!empty($result))
        {
             while ($row = mysqli_fetch_assoc($result)){
             $rows[] = $row;
             echo '<pre>'; print_R($row);
         }
     }
    }
...