sql >> Database teknologi >  >> RDS >> Mysql

PHP ignorerer ssl-certifikater, når der oprettes forbindelse til MySql

Ved første øjekast har du ikke indstillet MYSQLI_CLIENT_SSL mulighed for tilslutning.

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

Opdatering:
Du kan prøve at tilføje $mysqli->options(MYSQLI_OPT_SSL_VERIFY_SERVER_CERT, true); før $mysqli->ssl_set() .

Dette virker også for mig:

<?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);
?>

Opdatering 2: Du modtager muligvis et bad handshake hvis du bruger gammeldags mysql-adgangskode (16 bytes lang ). Kør følgende forespørgsel for at kontrollere:

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

Hvis du modtager 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'

Og tjek forbindelsen fra PHP-scriptet igen.



  1. Sådan konfigureres AppArmor til PostgreSQL og TimescaleDB

  2. Laravel Model Query Error :Illuminate\Database\QueryException:SQLSTATE[23000]:Integritetsbegrænsning overtrædelse

  3. Vælg antal / dubletter

  4. Finde tendenser i masser af tekstdata