PHP から SSL を使用してリモート MySQL サーバーに接続する
古い MySQL を使用して SSL を使用してリモート MySQL サーバーへの接続を確立しようとする場合拡張機能 (mysql_connect) を使用すると、「SSL 接続エラー」を示すエラーが発生する場合があります。 my.cnf で適切な SSL パラメータを設定して安全な端末接続を有効にしているにもかかわらず、PHP 接続は失敗したままです。
PHP バージョンに関する考慮事項
提供されたコードは古い MySQL 拡張機能を利用しています。 、現在は積極的に開発されていません。代わりに、次のような拡張機能セットを提供する MySQLi 拡張機能 (MySQL Enhanced Extension) を使用することをお勧めします。
改善MySQLi との接続
次のサンプル コードは、安全な SSL 接続に MySQLi を使用する方法を示しています。
ini_set ('error_reporting', E_ALL); ini_set ('display_errors', '1'); error_reporting (E_ALL|E_STRICT); $db = mysqli_init(); mysqli_options ($db, MYSQLI_OPT_SSL_VERIFY_SERVER_CERT, true); $db->ssl_set('/etc/mysql/ssl/client-key.pem', '/etc/mysql/ssl/client-cert.pem', '/etc/mysql/ssl/ca-cert.pem', NULL, NULL); $link = mysqli_real_connect ($db, 'ip', 'user', 'pass', 'db', 3306, NULL, MYSQLI_CLIENT_SSL);
PDO_MYSQL 代替
古い PHP バージョンでは SSL サポートが制限されているため理想的ではありませんが、PDO_MYSQL は次の目的で利用できます。 SSL 接続:
$pdo = new PDO('mysql:host=ip;dbname=db', 'user', 'pass', 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' )); $statement = $pdo->query("SHOW TABLES;"); $row = $statement->fetch(PDO::FETCH_ASSOC);
5.3.8 より前の PHP バージョンの PDO での SSL サポートは期待どおりに機能しない可能性があることに注意することが重要です。
さらに問題が発生した場合は、お問い合わせください。追加のガイダンスについては、次のリソースを参照してください:
以上がPHP で SSL 経由でリモート MySQL サーバーに安全に接続するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。