पहली नज़र में, आपने MYSQLI_CLIENT_SSL
सेट नहीं किया था कनेक्शन का विकल्प।
if (!$mysqli->real_connect('localhost', 'my_user', 'my_password', 'my_db', null, MYSQLI_CLIENT_SSL)) { ... }
अपडेट करें:
आप $mysqli->options(MYSQLI_OPT_SSL_VERIFY_SERVER_CERT, true);
$mysqli->ssl_set()
. से पहले ।
साथ ही, यह मेरे लिए काम करता है:
<?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);
?>
अपडेट 2: आपको एक bad handshake
प्राप्त हो सकता है अगर आप पुराने स्टाइल के mysql पासवर्ड का इस्तेमाल करते हैं (16 बाइट लंबा ) जाँच करने के लिए, निम्न क्वेरी चलाएँ:
mysql> select length(Password) from mysql.user where User='youruser'
अगर आपको 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'
और फिर से PHP स्क्रिप्ट से कनेक्शन की जाँच करें।