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

MySQL配置SSL加密訪問(wèn)的實(shí)現(xiàn)步驟

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

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

這里著重講解自建方案,個(gè)人感覺(jué)自建方案可操作性強(qiáng),CA簽發(fā)證書一年需要更新一次,對(duì)于數(shù)據(jù)庫(kù)來(lái)講誰(shuí)也受不了。

一、前提說(shuō)明

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

 核心邏輯:MySQL通過(guò)SSL證書完成服務(wù)端/客戶端身份驗(yàn)證,同時(shí)加密傳輸數(shù)據(jù);

 證書類型:

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

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

方式1:MySQL內(nèi)置工具自動(dòng)生成(推薦,8.0+)

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

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

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

mysql_ssl_rsa_setup不可用,用openssl手動(dòng)生成:

# 1. 創(chuàng)建證書目錄(建議與MySQL數(shù)據(jù)目錄分離)
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. 生成服務(wù)端證書(填寫信息時(shí),Common Name需為MySQL服務(wù)端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ū)分服務(wù)端)
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. 調(diào)整權(quán)限(僅mysql用戶可讀寫,防止私鑰泄露)
chmod 600 *.pem
chown mysql:mysql *.pem

三、步驟2:配置MySQL服務(wù)端啟用SSL

1. 修改MySQL配置文件

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

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

2. 重啟MySQL服務(wù)

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

3. 驗(yàn)證服務(wù)端SSL是否啟用

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

-- 查看SSL狀態(tài)(Ssl_enabled為YES表示啟用成功)
SHOW VARIABLES LIKE '%ssl%';
/* 預(yù)期輸出:
+---------------+---------------------------+
| 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連接

場(chǎng)景1:客戶端連接時(shí)手動(dòng)指定SSL(非強(qiáng)制)

客戶端連接MySQL時(shí),通過(guò)參數(shù)指定SSL證書,實(shí)現(xiàn)加密連接:

# 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

參數(shù)說(shuō)明:

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

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

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

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

場(chǎng)景3:客戶端配置文件持久化SSL(無(wú)需每次輸參數(shù))

編輯客戶端~/.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即可自動(dòng)使用SSL連接。

五、步驟4:驗(yàn)證SSL加密是否生效

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

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

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

2. 網(wǎng)絡(luò)層面驗(yàn)證(可選)

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

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

六、關(guān)鍵注意事項(xiàng)

 生產(chǎn)環(huán)境建議

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

2. 權(quán)限安全

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

3. 性能影響

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

4. 常見(jiàn)問(wèn)題

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

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

您可能感興趣的文章:

相關(guān)文章

  • MySQL無(wú)法啟動(dòng)1067錯(cuò)誤的又一種解決方法(機(jī)房斷電)

    MySQL無(wú)法啟動(dòng)1067錯(cuò)誤的又一種解決方法(機(jī)房斷電)

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

    在idea中如何操作MySQL數(shù)據(jù)庫(kù)

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

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

    以下是對(duì)MySQL中使用自定義變量,編寫一個(gè)UNION的示例進(jìn)行了詳細(xì)的介紹,需要的朋友可以過(guò)來(lái)參考下
    2013-07-07
  • 淺談MySQL數(shù)據(jù)庫(kù)的備份與恢復(fù)

    淺談MySQL數(shù)據(jù)庫(kù)的備份與恢復(fù)

    MYSQL數(shù)據(jù)庫(kù)的備份、恢復(fù)等是每一位信息管理人員應(yīng)必備的能力,因此掌握MYSQL數(shù)據(jù)庫(kù)管理的技巧會(huì)使您的工作事半功倍,這里我們來(lái)簡(jiǎn)單總結(jié)下。
    2017-01-01
  • MySQL中字符集與排序規(guī)則的實(shí)現(xiàn)

    MySQL中字符集與排序規(guī)則的實(shí)現(xiàn)

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

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

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

    MySQL中主鍵與rowid的使用陷阱總結(jié)

    這篇文章主要給大家總結(jié)介紹了關(guān)于MySQL中主鍵與rowid的使用陷阱,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用MySQL具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • 探索MySQL?8中utf8mb4釋放多語(yǔ)言數(shù)據(jù)的強(qiáng)大潛力

    探索MySQL?8中utf8mb4釋放多語(yǔ)言數(shù)據(jù)的強(qiáng)大潛力

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

    MySQL數(shù)據(jù)庫(kù)表中的約束詳解

    約束是用來(lái)限制表中的數(shù)據(jù)長(zhǎng)什么樣子的,即什么樣的數(shù)據(jù)可以插入到表中,什么樣的數(shù)據(jù)插入不到表中,下面這篇文章主要給大家介紹了關(guān)于如何通過(guò)一文理解MySQL數(shù)據(jù)庫(kù)的約束與表的設(shè)計(jì)的相關(guān)資料,需要的朋友可以參考下
    2023-03-03
  • mysql 無(wú)法連接問(wèn)題的定位和修復(fù)過(guò)程分享

    mysql 無(wú)法連接問(wèn)題的定位和修復(fù)過(guò)程分享

    開(kāi)發(fā)的一款網(wǎng)站防護(hù)產(chǎn)品中出現(xiàn)了一個(gè)客戶端上安裝后Mysql每隔一段時(shí)間就出現(xiàn)問(wèn)題,這個(gè)問(wèn)題是客戶反饋的,所以需要去復(fù)現(xiàn)和定位
    2013-03-03

最新評(píng)論

堆龙德庆县| 雷州市| 乌拉特前旗| 承德县| 依兰县| 大埔县| 三江| 德化县| 苏尼特左旗| 清新县| 积石山| 宝坻区| 西藏| 贵溪市| 炎陵县| 库尔勒市| 邹城市| 华池县| 潼南县| 钦州市| 巨鹿县| 安岳县| 高青县| 吴江市| 连南| 黎川县| 苗栗市| 故城县| 陵水| 凤凰县| 沐川县| 丽水市| 蒲城县| 鱼台县| 色达县| 南昌县| 江安县| 察哈| 耒阳市| 米易县| 安龙县|