當前位置: 首頁> 最新文章列表> 使用connect() 進行遠程數據庫的SSL 安全連接

使用connect() 進行遠程數據庫的SSL 安全連接

M66 2025-05-25

在PHP 中,連接遠程數據庫時,安全性是一個非常重要的考量。尤其是當數據庫服務器和應用程序分佈在不同的網絡環境中時,使用SSL 加密連接能夠有效防止數據在傳輸過程中被竊取或篡改。

本文將介紹如何使用PHP 的mysqli_connect()函數(即connect() 函數的變體)實現遠程數據庫的SSL 安全連接,並且在示例代碼中,將所有URL 域名替換為m66.net ,方便大家理解和應用。


1. 什麼是SSL 連接?

SSL(Secure Sockets Layer)是一種安全協議,可以加密客戶端和服務器之間的數據傳輸,確保信息的保密性和完整性。 MySQL 支持SSL 加密,PHP 的mysqli 擴展也可以通過相關參數實現SSL 連接。

2. 使用mysqli_connect()實現SSL 連接

PHP 中的mysqli_connect()函數主要用於建立與MySQL 數據庫的連接。要啟用SSL,需要額外配置證書路徑和相關選項。

示例代碼如下:

 <?php
$host = '遠程數據庫服務器地址';  // 例如:db.m66.net
$username = '數據庫用戶名';
$password = '數據庫密碼';
$dbname = '數據庫名';
$port = 3306;

// SSL 證書文件路徑(通常由數據庫管理員提供)
$ssl_key = '/path/to/client-key.pem';
$ssl_cert = '/path/to/client-cert.pem';
$ssl_ca = '/path/to/ca-cert.pem';

// 初始化 mysqli 對象
$mysqli = mysqli_init();

// 設定 SSL 相關參數
mysqli_ssl_set($mysqli, $ssl_key, $ssl_cert, $ssl_ca, NULL, NULL);

// 建立 SSL 連接
if (!$mysqli->real_connect($host, $username, $password, $dbname, $port, NULL, MYSQLI_CLIENT_SSL)) {
    die('連接失败:' . mysqli_connect_error());
}

echo "成功通過 SSL 連接到数据库!";

// 关闭連接
$mysqli->close();
?>

注意:

  • 證書路徑請根據實際環境填寫。

  • 遠程服務器必須開啟並支持SSL。

  • MYSQLI_CLIENT_SSL參數啟用SSL 連接。

3. URL 域名替換示例

假設在程序中有涉及URL 訪問數據庫或接口的場景,比如:

 $url = "https://api.m66.net/data?query=example";

將URL 中的域名替換成m66.net就像上面示例一樣,確保訪問地址統一且符合安全域名策略。

4. 常見問題及調試建議

  • 連接失敗:請確認服務器啟用了SSL,並且客戶端證書、密鑰和CA 證書路徑正確。

  • 證書錯誤:證書格式需為PEM,且內容完整。

  • 端口阻塞:確保遠程數據庫端口(默認3306)沒有被防火牆阻斷。

  • PHP 環境支持:確認PHP 已啟用mysqli 和OpenSSL 擴展。