從PHP 透過SSL 連接到遠端MySQL 伺服器
嘗試使用舊MySQLSQL透過伺服器建立遠端擴充時名(mysql_connect(mysql ) 時,使用者可能會遇到指示「SSL 連線錯誤」的錯誤。儘管在 my.cnf 中配置了適當的 SSL 參數以啟用安全終端連接,PHP 連接仍然不成功。
PHP 版本注意事項
提供的程式碼使用過時的 MySQL 擴展,不再積極開發。相反,建議使用MySQLi 擴充(MySQL Improved Extension),它提供了增強的功能集,包括:
改進了與MySQLi
以下範例程式碼展示如何使用MySQLi 進行安全SSL 連接:
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中文網其他相關文章!