Сбой соединения mysqli с "Получил ошибку при чтении пакетов связи" - PullRequest
0 голосов
/ 26 марта 2019

При попытке подключиться к базе данных mysql в php-7.2 с помощью ssl, это приводит к ошибке Got an error reading communication packets

SSL был установлен на сервере с помощью команды:

sudo mysql_ssl_rsa_setup --uid=mysql

До сих пор я пробовал следующие подходы:

<?php
$conn=mysqli_init();
if (!$conn){
  die("mysqli_init failed");
}

$conn->options(MYSQLI_OPT_SSL_VERIFY_SERVER_CERT, true);
mysqli_ssl_set($conn,NULL,NULL,"scripts/ssl/ca.pem",NULL,NULL);

if (!mysqli_real_connect($conn,"<ip-address>","<user>","<passsword>","<database>")){
  die("Connect Error: " . mysqli_connect_error());
}

$sql = "SELECT * FROM accounts";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
        echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
    }
} else {
    echo "0 results";
}

mysqli_close($conn);
?>

и ...

<?php
$conn=mysqli_init();
if (!$conn){
  die("mysqli_init failed");
}

mysqli_ssl_set($conn,"scripts/ssl/client-key.pem","scripts/ssl/client-cert.pem","scripts/ssl/ca.pem",NULL,NULL);

if (!mysqli_real_connect($conn,"<ip-address>","<user>","<passsword>","<database>")){
  die("Connect Error: " . mysqli_connect_error());
}

$sql = "SELECT * FROM accounts";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
        echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
    }
} else {
    echo "0 results";
}

mysqli_close($conn);
?> 

Я временно добавил:

$homepage = file_get_contents("scripts/ssl/client-key.pem");
echo $homepage;

к коду, который напечатал сертификат на экране, поэтому я знаю, что пути к файлам правильные.

Все файлы SSL были извлечены прямо с сервера, на котором запущен mysql, поэтому здесь также не должно быть проблем.

mysqli_connect_error() ничего не возвращает. Единственная ошибка Got an error reading communication packets из /var/log/mysql/error.log

Я нашел методы выше из этого вопроса о переполнении стека.

Ссылочная ссылка ссылается на эту документацию, которая лишь немного более полезна, чем официальная документация . Документация по SSL с mysqli, кажется, довольно отсутствует.

Любые предложения о том, что я делаю неправильно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...