Mysql
 sql >> Baza danych >  >> RDS >> Mysql

PHP ignoruje certyfikaty SSL podczas łączenia się z MySql

Na pierwszy rzut oka nie ustawiłeś MYSQLI_CLIENT_SSL możliwość podłączenia.

if (!$mysqli->real_connect('localhost', 'my_user', 'my_password', 'my_db', null, MYSQLI_CLIENT_SSL)) { ... }

Aktualizacja:
Możesz spróbować dodać $mysqli->options(MYSQLI_OPT_SSL_VERIFY_SERVER_CERT, true); przed $mysqli->ssl_set() .

To działa również dla mnie:

<?php
$pdo = new PDO('mysql:host=ip;dbname=dbname', 'username', 'password', array(
    PDO::MYSQL_ATTR_SSL_KEY    =>'/etc/mysql/ssl/client-key.pem',
    PDO::MYSQL_ATTR_SSL_CERT=>'/etc/mysql/ssl/client-cert.pem',
    PDO::MYSQL_ATTR_SSL_CA    =>'/etc/mysql/ssl/ca-cert.pem'
    )
);
$stmt = $pdo->query("SHOW TABLES;");
$row = $stmt->fetch(PDO::FETCH_ASSOC);
print_r($row);
?>

Aktualizacja 2: Możesz otrzymać bad handshake jeśli używasz hasła mysql w starym stylu (16 bajtów ). Aby to sprawdzić, uruchom następujące zapytanie:

mysql> select length(Password) from mysql.user where User='youruser'

Jeśli otrzymasz 16 :

// disable old_passwords:
mysql> SET @@session.old_passwords = 0;

// update password for user used in PHP script:
mysql> SET PASSWORD FOR 'existinguser'@'localhost' = PASSWORD('existingpass');

// check if we have a 41 bytes long password:
mysql> select length(Password) from mysql.user where User='youruser'

I ponownie sprawdź połączenie ze skryptu PHP.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wybierz wiersz i rzędy wokół niego

  2. Kara wydajności dla zagnieżdżonych zapytań mysql

  3. session_start Zgłasza krytyczny błąd

  4. PHP wiele poleceń MYSQL w jednym zapytaniu mysql_query()

  5. Programowy odpowiednik importu w phpMyAdmin