首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 建立加密 SSL 連線完整配置指南

     編輯:MySQL 資料庫相關知識

⚠️ 重要提示

**本文原始內容與文章 90954 完全重複(均為權限表內容),標題「建立加密連接」與內容不符。**

正確的 SSL 加密連線配置內容如下:

正確內容大綱(補充)

1. 伺服器端配置 (my.cnf)

[mysqld]
ssl-ca=/etc/mysql/certs/ca.pem
ssl-cert=/etc/mysql/certs/server-cert.pem
ssl-key=/etc/mysql/certs/server-key.pem
# 可選:強制所有連線使用 SSL
# require_secure_transport=ON

2. 產生憑證 (OpenSSL)

# 建立 CA
openssl genrsa -out ca-key.pem 2048
openssl req -new -x509 -nodes -days 3650 -key ca-key.pem -out ca.pem

# 建立伺服器憑證
openssl req -newkey rsa:2048 -nodes -days 365 -keyout server-key.pem -out server-req.pem
openssl x509 -req -in server-req.pem -days 365 -CA ca.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem

# 建立客戶端憑證(可選,雙向驗證用)
openssl req -newkey rsa:2048 -nodes -days 365 -keyout client-key.pem -out client-req.pem
openssl x509 -req -in client-req.pem -days 365 -CA ca.pem -CAkey ca-key.pem -set_serial 02 -out client-cert.pem

# 設定權限
chmod 600 *-key.pem
chmod 644 *.pem

3. 建立要求 SSL 的帳號

CREATE USER 'ssl_user'@'%' IDENTIFIED BY 'password'
REQUIRE SSL;                    -- 僅要求加密
-- 或
REQUIRE X509;                   -- 要求客戶端憑證
-- 或
REQUIRE SUBJECT '/CN=client';   -- 要求特定主體

4. 客戶端連線驗證

# 僅加密
mysql -u ssl_user -p -h host --ssl-ca=ca.pem

# 雙向驗證
mysql -u ssl_user -p -h host --ssl-ca=ca.pem --ssl-cert=client-cert.pem --ssl-key=client-key.pem

# 驗證連線狀態
SHOW STATUS LIKE 'Ssl_cipher';  -- 顯示加密套件表示 SSL 生效
\S  -- mysql client 內指令顯示 SSL 狀態

5. 驗證與疑難排解

  • SHOW VARIABLES LIKE 'have_ssl' → YES 表示編譯支援
  • SHOW VARIABLES LIKE 'have_openssl' → YES 表示 OpenSSL 支援
  • 錯誤日誌檢查 SSL 初始化訊息
  • 防火牆確認 3306 端口通行

6. GRANT 中的 REQUIRE 子句完整語法

GRANT ... REQUIRE {NONE | SSL | X509 | CIPHER 'cipher' | ISSUER 'issuer' | SUBJECT 'subject'}

可組合使用,如 REQUIRE SSL AND SUBJECT '/CN=app'。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved