最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL配置SSL加密訪問的實現步驟

 更新時間:2026年03月03日 10:05:50   作者:遇見火星  
本文主要介紹了MySQL配置SSL加密訪問,包括自建證書和CA簽發(fā)證書兩種方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

要為MySQL配置SSL加密訪問,核心目標是讓客戶端與MySQL服務端之間的網絡傳輸數據被SSL/TLS加密,防止數據在傳輸過程中被竊聽、篡改或偽造。以下是完整的配置步驟(涵蓋自建證書、服務端配置、客戶端驗證),分為「測試環(huán)境(自建自簽名證書)」和「生產環(huán)境(CA簽發(fā)證書)」兩種場景。

這里著重講解自建方案,個人感覺自建方案可操作性強,CA簽發(fā)證書一年需要更新一次,對于數據庫來講誰也受不了。

一、前提說明

 MySQL版本要求:5.7及以上默認支持SSL,8.0+內置簡易證書生成工具(推薦使用);

 核心邏輯:MySQL通過SSL證書完成服務端/客戶端身份驗證,同時加密傳輸數據;

 證書類型:

  •  自簽名證書:適合測試/內網環(huán)境,無需CA認證,但客戶端需信任該證書;
  •  CA簽發(fā)證書:適合生產環(huán)境,安全性更高,需向可信CA申請證書。

二、步驟1:生成SSL證書(自建自簽名,測試環(huán)境)

方式1:MySQL內置工具自動生成(推薦,8.0+)

MySQL 8.0+提供mysql_ssl_rsa_setup工具,可一鍵生成自簽名SSL證書:

# 1. 進入MySQL數據目錄(需確認目錄權限,通常為/var/lib/mysql/)
cd /var/lib/mysql
chown mysql:mysql .  # 確保mysql用戶有讀寫權限
 
# 2. 生成SSL證書(--datadir指定證書存放目錄)
mysql_ssl_rsa_setup --datadir=/var/lib/mysql --uid=mysql
 
# 3. 查看生成的證書文件(關鍵文件如下)
ls -l /var/lib/mysql/*.pem
# 核心文件說明:
# ca.pem          → CA根證書(客戶端需信任)
# server-cert.pem → 服務端證書
# server-key.pem  → 服務端私鑰
# client-cert.pem → 客戶端證書
# client-key.pem  → 客戶端私鑰

方式2:手動生成(適配5.7+/8.0,通用)

mysql_ssl_rsa_setup不可用,用openssl手動生成:

# 1. 創(chuàng)建證書目錄(建議與MySQL數據目錄分離)
mkdir -p /etc/mysql/ssl
chown mysql:mysql /etc/mysql/ssl
cd /etc/mysql/ssl
 
# 2. 生成CA根證書(有效期10年)
openssl genrsa 2048 > ca-key.pem
openssl req -new -x509 -nodes -days 3650 -key ca-key.pem > ca.pem
 
# 3. 生成服務端證書(填寫信息時,Common Name需為MySQL服務端IP/域名)
openssl req -newkey rsa:2048 -days 3650 -nodes -keyout server-key.pem > server-req.pem
openssl rsa -in server-key.pem -out server-key.pem
openssl x509 -req -in server-req.pem -days 3650 -CA ca.pem -CAkey ca-key.pem -set_serial 01 > server-cert.pem
 
# 4. 生成客戶端證書(Common Name可任意,建議區(qū)分服務端)
openssl req -newkey rsa:2048 -days 3650 -nodes -keyout client-key.pem > client-req.pem
openssl rsa -in client-key.pem -out client-key.pem
openssl x509 -req -in client-req.pem -days 3650 -CA ca.pem -CAkey ca-key.pem -set_serial 02 > client-cert.pem
 
# 5. 調整權限(僅mysql用戶可讀寫,防止私鑰泄露)
chmod 600 *.pem
chown mysql:mysql *.pem

三、步驟2:配置MySQL服務端啟用SSL

1. 修改MySQL配置文件

編輯MySQL配置文件(Linux:/etc/my.cnf//etc/mysql/my.cnf;Windows:my.ini),添加以下配置:

[mysqld]
# 啟用SSL(強制服務端使用SSL)
ssl=ON
# 指定證書路徑(根據實際生成路徑修改)
ssl-ca=/var/lib/mysql/ca.pem          # CA根證書
ssl-cert=/var/lib/mysql/server-cert.pem  # 服務端證書
ssl-key=/var/lib/mysql/server-key.pem    # 服務端私鑰
 
# 可選:強制所有客戶端連接必須使用SSL(生產環(huán)境建議開啟)
# require_secure_transport=ON
 
# 可選:指定SSL協(xié)議版本(避免老舊協(xié)議,生產環(huán)境建議)
tls_version=TLSv1.2,TLSv1.3

2. 重啟MySQL服務

# Linux(Systemd)
systemctl restart mysqld
 
# Linux(SysV)
service mysqld restart
 
# Windows
net stop mysql && net start mysql

3. 驗證服務端SSL是否啟用

登錄MySQL服務端,執(zhí)行以下命令:

-- 查看SSL狀態(tài)(Ssl_enabled為YES表示啟用成功)
SHOW VARIABLES LIKE '%ssl%';
/* 預期輸出:
+---------------+---------------------------+
| Variable_name | Value                     |
+---------------+---------------------------+
| have_ssl      | YES                       |
| ssl_ca        | /var/lib/mysql/ca.pem     |
| ssl_cert      | /var/lib/mysql/server-cert.pem |
| ssl_key       | /var/lib/mysql/server-key.pem   |
+---------------+---------------------------+
*/

四、步驟3:配置客戶端SSL連接

場景1:客戶端連接時手動指定SSL(非強制)

客戶端連接MySQL時,通過參數指定SSL證書,實現加密連接:

# MySQL客戶端命令行連接(替換為你的IP/端口/用戶名)
mysql -h 192.168.1.100 -P 3306 -u root -p \
  --ssl-mode=REQUIRED \
  --ssl-ca=/var/lib/mysql/ca.pem \
  --ssl-cert=/var/lib/mysql/client-cert.pem \
  --ssl-key=/var/lib/mysql/client-key.pem

參數說明:

  •  --ssl-mode=REQUIRED:強制使用SSL連接,無SSL則拒絕(可選值:DISABLED/REQUIRED/VERIFY_CA/VERIFY_IDENTITY);
  •  --ssl-ca:指定CA根證書(驗證服務端證書合法性);
  •  --ssl-cert/--ssl-key:客戶端證書/私鑰(服務端驗證客戶端身份時需用)。

場景2:授權用戶必須使用SSL連接(生產環(huán)境)

為MySQL用戶配置“僅允許SSL加密連接”,防止明文連接:

-- 授權root用戶僅能通過SSL從任意主機訪問(替換為你的用戶/IP)
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你的密碼' REQUIRE SSL;
 
-- 刷新權限
FLUSH PRIVILEGES;
 
-- 查看用戶的SSL權限(Ssl_type為SSL表示強制)
SELECT user, host, ssl_type FROM mysql.user WHERE user='root';

場景3:客戶端配置文件持久化SSL(無需每次輸參數)

編輯客戶端~/.my.cnf(Linux)或%APPDATA%\MySQL\.my.cnf(Windows):

[client]
host=192.168.1.100
port=3306
user=root
password=你的密碼
ssl-mode=REQUIRED
ssl-ca=/var/lib/mysql/ca.pem
ssl-cert=/var/lib/mysql/client-cert.pem
ssl-key=/var/lib/mysql/client-key.pem

之后直接執(zhí)行mysql即可自動使用SSL連接。

五、步驟4:驗證SSL加密是否生效

1. 客戶端驗證連接狀態(tài)

登錄MySQL后,執(zhí)行以下命令:

-- 查看當前連接的SSL狀態(tài)(Ssl_cipher非空表示加密生效)
SHOW STATUS LIKE 'Ssl_cipher';
/* 預期輸出:
+---------------+-----------------------------+
| Variable_name | Value                       |
+---------------+-----------------------------+
| Ssl_cipher    | TLS_AES_256_GCM_SHA384      |
+---------------+-----------------------------+
*/

2. 網絡層面驗證(可選)

tcpdump/wireshark抓包,查看MySQL端口(3306)的流量:

  •  未加密:能看到明文的SQL語句(如SELECT * FROM user);
  •  已加密:流量為亂碼,無明文SQL。

六、關鍵注意事項

 生產環(huán)境建議

  •  不要使用自簽名證書,改用Let’s Encrypt等可信CA簽發(fā)的證書;
  •  啟用require_secure_transport=ON,強制所有連接使用SSL;
  •  限制SSL協(xié)議版本為TLSv1.2+,禁用TLSv1.0/TLSv1.1(老舊協(xié)議有安全漏洞)。

2. 權限安全

  •  證書文件(尤其是私鑰.pem)必須僅對mysql用戶可讀寫(權限600),防止泄露;
  •  客戶端證書不要隨意外傳,僅分發(fā)給可信客戶端。

3. 性能影響

  •  SSL加密會增加少量CPU開銷(約5%-10%),高并發(fā)場景可通過硬件加速優(yōu)化;
  •  若內網環(huán)境已做網絡隔離,可僅對跨公網的連接啟用SSL。

4. 常見問題

  •  連接失敗提示SSL connection error:檢查證書路徑/權限、MySQL服務端SSL是否啟用;
  •  客戶端驗證失?。捍_保CA證書一致,服務端/客戶端證書的Common Name匹配;
  •  MySQL 5.7以下:需手動編譯啟用SSL,建議升級到5.7+。

到此這篇關于MySQL配置SSL加密訪問的實現步驟的文章就介紹到這了,更多相關MySQL配置SSL加密訪問內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:

相關文章

  • MySQL無法啟動1067錯誤的又一種解決方法(機房斷電)

    MySQL無法啟動1067錯誤的又一種解決方法(機房斷電)

    今早在對一張table 創(chuàng)建primay key過程中發(fā)生了斷電,當電腦再次啟動時候,發(fā)現mysql 服務無法啟動,使用 net start 提示 1067錯誤,折騰了2個小時無法解決,后來只能通過手工刪除數據文件,日志文件,再啟動服務,然后導入數據來完成
    2013-01-01
  • 在idea中如何操作MySQL數據庫

    在idea中如何操作MySQL數據庫

    這篇文章主要介紹了在idea中如何操作MySQL數據庫問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • MySQL中使用自定義變量 編寫偷懶的UNION示例

    MySQL中使用自定義變量 編寫偷懶的UNION示例

    以下是對MySQL中使用自定義變量,編寫一個UNION的示例進行了詳細的介紹,需要的朋友可以過來參考下
    2013-07-07
  • 淺談MySQL數據庫的備份與恢復

    淺談MySQL數據庫的備份與恢復

    MYSQL數據庫的備份、恢復等是每一位信息管理人員應必備的能力,因此掌握MYSQL數據庫管理的技巧會使您的工作事半功倍,這里我們來簡單總結下。
    2017-01-01
  • MySQL中字符集與排序規(guī)則的實現

    MySQL中字符集與排序規(guī)則的實現

    本文主要介紹了MySQL中字符集與排序規(guī)則的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2026-01-01
  • CentOS7環(huán)境安裝包部署并配置MySQL5.7教程

    CentOS7環(huán)境安裝包部署并配置MySQL5.7教程

    文章詳細介紹了卸載和重新安裝MySQL 5.7的步驟,包括卸載舊版本、查看和卸載相關服務、下載和解壓新版本安裝包、創(chuàng)建用戶和目錄、配置my.cnf、初始化數據庫、啟動和修改密碼等過程,同時,還解決了客戶端不支持問題以及配置遠程登錄的步驟
    2026-02-02
  • MySQL中主鍵與rowid的使用陷阱總結

    MySQL中主鍵與rowid的使用陷阱總結

    這篇文章主要給大家總結介紹了關于MySQL中主鍵與rowid的使用陷阱,文中通過示例代碼介紹的非常詳細,對大家的學習或者使用MySQL具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-10-10
  • 探索MySQL?8中utf8mb4釋放多語言數據的強大潛力

    探索MySQL?8中utf8mb4釋放多語言數據的強大潛力

    這篇文章主要為大家介紹了探索MySQL?8中utf8mb4釋放多語言數據的強大潛力,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-12-12
  • MySQL數據庫表中的約束詳解

    MySQL數據庫表中的約束詳解

    約束是用來限制表中的數據長什么樣子的,即什么樣的數據可以插入到表中,什么樣的數據插入不到表中,下面這篇文章主要給大家介紹了關于如何通過一文理解MySQL數據庫的約束與表的設計的相關資料,需要的朋友可以參考下
    2023-03-03
  • mysql 無法連接問題的定位和修復過程分享

    mysql 無法連接問題的定位和修復過程分享

    開發(fā)的一款網站防護產品中出現了一個客戶端上安裝后Mysql每隔一段時間就出現問題,這個問題是客戶反饋的,所以需要去復現和定位
    2013-03-03

最新評論

图片| 临夏县| 任丘市| 克拉玛依市| 襄垣县| 承德县| 洪江市| 南木林县| 新闻| 兴山县| 岑溪市| 雷州市| 太康县| 柳林县| 邯郸县| 潞城市| 涿鹿县| 香格里拉县| 蒙阴县| 西安市| 永修县| 准格尔旗| 综艺| 黔西县| 句容市| 临沧市| 大庆市| 林周县| 富阳市| 清水县| 衡东县| 太谷县| 沙洋县| 潞西市| 瑞安市| 开江县| 杂多县| 平乐县| 淳安县| 察雅县| 吉林市|