文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
手冊頁 (TGZ) - 258.5Kb
手冊頁 (Zip) - 365.5Kb
資訊 (Gzip) - 4.0Mb
資訊 (Zip) - 4.0Mb


MySQL 8.4 參考手冊  /  安全性  /  使用加密連線

8.3 使用加密連線

在 MySQL 用戶端和伺服器之間使用未加密的連線時,有權存取網路的任何人都可以監視您的所有流量,並檢查用戶端和伺服器之間傳送或接收的資料。

當您必須以安全的方式透過網路傳輸資訊時,未加密的連線是不可接受的。為了使任何類型的資料無法讀取,請使用加密。加密演算法必須包含安全性元素,以抵抗許多已知的攻擊類型,例如變更加密訊息的順序或重複播放資料兩次。

MySQL 支援使用 TLS(傳輸層安全性)協定的用戶端和伺服器之間的加密連線。TLS 有時稱為 SSL(安全通訊端層),但 MySQL 實際上不使用 SSL 協定進行加密連線,因為其加密較弱(請參閱章節 8.3.2,「加密連線 TLS 協定和密碼」)。

TLS 使用加密演算法來確保透過公用網路接收的資料可以信任。它具有偵測資料變更、遺失或重複播放的機制。TLS 還結合了使用 X.509 標準提供身分驗證的演算法。

X.509 技術使得在網際網路上識別身分成為可能。簡單來說,應該有一個稱為「憑證授權單位」(或 CA) 的實體,負責將電子憑證指派給任何需要的人。憑證依賴非對稱加密演算法,該演算法具有兩個加密金鑰(公鑰和私鑰)。憑證擁有者可以向另一方出示憑證,作為身分證明。憑證包含其擁有者的公鑰。任何使用此公鑰加密的資料,都只能使用對應的私鑰解密,而私鑰由憑證擁有者持有。

MySQL 中對加密連線的支援是透過 OpenSSL 提供的。有關 OpenSSL 支援的加密協定和密碼的資訊,請參閱第 8.3.2 節,「加密連線 TLS 協定和密碼」

預設情況下,MySQL 實例會在執行階段連結到可用的已安裝 OpenSSL 程式庫,以支援加密連線和其他與加密相關的操作。您可以從原始碼編譯 MySQL,並使用 WITH_SSL CMake 選項來指定特定已安裝 OpenSSL 版本或替代 OpenSSL 系統套件的路徑。在這種情況下,MySQL 會選擇該版本。有關執行此操作的說明,請參閱第 2.8.6 節,「設定 SSL 程式庫支援」

您可以使用 Tls_library_version 系統狀態變數來檢查執行階段正在使用的 OpenSSL 程式庫的版本。

如果您使用一個版本的 OpenSSL 編譯 MySQL,並想要變更為不同的版本而無需重新編譯,您可以編輯動態程式庫載入器路徑(Unix 系統上的 LD_LIBRARY_PATH 或 Windows 系統上的 PATH)來執行此操作。移除已編譯 OpenSSL 版本的路徑,並將替換版本的路徑新增到路徑中,將其放置在路徑上任何其他 OpenSSL 程式庫之前。啟動時,當 MySQL 在路徑上找不到使用 WITH_SSL 指定的 OpenSSL 版本時,它會改為使用路徑上指定的第一個版本。

預設情況下,如果伺服器支援加密連線,MySQL 程式會嘗試使用加密連線,如果無法建立加密連線,則會退回到未加密的連線。有關影響加密連線使用的選項的資訊,請參閱第 8.3.1 節,「設定 MySQL 以使用加密連線」加密連線的命令選項

MySQL 會針對每個連線執行加密,並且給定使用者的加密使用可以是選用的或強制的。這使您可以根據個別應用程式的需求選擇加密或未加密的連線。有關如何要求使用者使用加密連線的資訊,請參閱CREATE USER 陳述式中的 REQUIRE 子句的討論,位於第 15.7.1.3 節,「CREATE USER 陳述式」。另請參閱位於第 7.1.8 節,「伺服器系統變數」require_secure_transport 系統變數的描述。

加密連線可用於來源伺服器和複本伺服器之間。請參閱第 19.3.1 節,「設定複寫以使用加密連線」

有關從 MySQL C API 使用加密連線的資訊,請參閱支援加密連線

也可以透過 SSH 連線到 MySQL 伺服器主機時使用加密連線。有關範例,請參閱第 8.3.4 節,「使用 SSH 從 Windows 遠端連線到 MySQL」