首頁 >資料庫 >mysql教程 >如何在 PHP 中透過 SSL 安全連接到遠端 MySQL 伺服器?

如何在 PHP 中透過 SSL 安全連接到遠端 MySQL 伺服器?

DDD
DDD原創
2024-11-23 22:48:10809瀏覽

How to Securely Connect to a Remote MySQL Server via SSL in PHP?

從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 MySQLi SSL連線範例](https://www.digitalocean.com/community/tutorials/how-to-use-ssl-to-secure-mysql-connections-in-php)
  • [PDO MySQL SSL 設定] ( https://stackoverflow.com/questions/30075513/pdo-ssl-connection-fails)

以上是如何在 PHP 中透過 SSL 安全連接到遠端 MySQL 伺服器?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn