首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 5.7 SSL 加密連線配置與效能影響實測

     編輯:MySQL 綜合教學

MySQL 5.7 SSL 加密連線配置與效能影響實測

前言:為何必須開啟 SSL

MySQL 5.7 前版本存在預設 root 空密碼、test 資料庫人人可讀等安全隱患。5.7 版本重大改進:

  • 安裝時隨機生成 root 密碼
  • 移除 test 資料庫
  • 內建 mysql_ssl_rsa_setup 自動配置 SSL
  • 客戶端預設嘗試 SSL 連線

SSL/TLS 核心概念

SSL (Secure Sockets Layer) 及其繼任者 TLS (Transport Layer Security) 為網路通訊提供加密、認證、完整性保護。未加密傳輸等同明文,極易遭竊聽、篡改。主流網站早已全站 HTTPS。

SSL 加密原理示意
SSL 加密原理示意

資料庫層面的必要性

應用層遮罩敏感欄位(顯示 ***)無法防禦網路層抓包。DBA 本機運行 tcpdump 即可還原明文。必須在傳輸層啟用 SSL,確保「傳輸中加密」。

MySQL 5.7 SSL 自動化部署

shell> bin/mysqld --initialize --user=mysql
shell> bin/mysql_ssl_rsa_setup

生成檔案(資料目錄):

ca-key.pem        ca.pem            client-cert.pem   client-key.pem
private_key.pem   public_key.pem    server-cert.pem   server-key.pem

驗證與連線測試

mysql> SHOW VARIABLES LIKE 'have_ssl';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| have_ssl      | YES   |
+---------------+-------+

root@test-1:~# mysql -h10.166.224.32 -udavid
mysql> \s
SSL: Cipher in use is DHE-RSA-AES256-SHA

強制用戶使用 SSL

ALTER USER david@'%' REQUIRE SSL;
# 之後 --ssl=0 連線將失敗
ERROR 1045 (28000): Access denied for user 'david'@'...' (using password: YES)

MySQL 5.6 對比

5.6 需手動 openssl 產生 CA、伺服器/客戶端金鑰,配置 my.cnf 指定路徑,流程繁瑣易出錯。

SSL 效能實測

環境:4 核 CPU 雲主機,全記憶體 SELECT 主鍵查詢(最壞情況)。

SSL 效能測試圖表
開啟 SSL 後 QPS 下降約 25%

關鍵發現

  • 效能開銷約 25%(CPU 密集型加解密運算)。
  • 主要成本在 連線建立階段(TLS 握手、金鑰協商、憑證驗證)。
  • 短連線應用影響更大,長連線/連線池可有效攤銷成本。
  • 現代 CPU 支援 AES-NI 硬體加速,實際開銷通常低於 25%。

最佳實踐建議

  1. 生產環境強制啟用 SSL:資料安全優先,25% 開銷可接受。
  2. 應用端使用連線池:HikariCP、Druid 等預設長連線,複用連線避免頻繁握手。
  3. 監控 SSL 指標:Ssl_accept_renegotiates、Ssl_callback_cache_hits、連線建立延遲。
  4. 憑證管理:年度輪換、使用 ECC 憑證(更輕量)、啟用 TLS 1.2/1.3、禁用弱加密套件。
  5. 5.6 升級 5.7+:享受自動化部署與預設加密紅利。

總結

  1. MySQL 5.7 SSL 配置極度簡化,mysql_ssl_rsa_setup 一鍵搞定。
  2. 客戶端預設 SSL 連線,REQUIRE SSL 可強制執行。
  3. 典型負載效能損耗 ~25%,長連線架構下實際影響遠小於此。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved