Mysql8配置SSL安全連接的詳細(xì)指南
概述
Mysql 8 默認(rèn)啟用SSL安全連接,也可以強(qiáng)制必須啟用。建議手動(dòng)生成自簽名證書和key并配置到服務(wù)端和客戶端路徑里,也可以直接使用mysql默認(rèn)生成的。
前提條件
- 使用OpenSSL編譯的MySQL服務(wù)器
- 官網(wǎng)mysql安裝包已經(jīng)集成了,支持ssl自簽名證書
- 自簽名證書文件系統(tǒng)自動(dòng)生成,默認(rèn)在數(shù)據(jù)存儲(chǔ)目錄下
[root@centos7-172-028-002-001 mysql]# ll /var/lib/mysql | grep pem
-rw------- 1 mysql mysql 1680 3月 18 22:03 ca-key.pem
-rw-r--r-- 1 mysql mysql 1108 3月 18 22:03 ca.pem
-rw-r--r-- 1 mysql mysql 1108 3月 18 22:03 client-cert.pem
-rw------- 1 mysql mysql 1676 3月 18 22:03 client-key.pem
-rw------- 1 mysql mysql 1680 3月 18 22:03 private_key.pem
-rw-r--r-- 1 mysql mysql 452 3月 18 22:03 public_key.pem
-rw-r--r-- 1 mysql mysql 1108 3月 18 22:03 server-cert.pem
-rw------- 1 mysql mysql 1680 3月 18 22:03 server-key.pem
因?yàn)槭亲院灻C書,啟動(dòng)日志中會(huì)報(bào)一條警告信息
[Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
Mysql 8手動(dòng)配置SSL安全連接
修改配置文件
[mysqld] # 強(qiáng)制所有網(wǎng)絡(luò)連接使用ssl。socket不受限制(默認(rèn)就是安全狀態(tài)。如果客戶端強(qiáng)制使用SSL連接,允許登錄,但會(huì)提示建議取消SSL的信息) require_secure_transport=ON
修改運(yùn)行參數(shù)
進(jìn)入數(shù)據(jù)庫手動(dòng)設(shè)置正在運(yùn)行的數(shù)據(jù)庫
SET PERSIST require_secure_transport=ON;
Mysql 8服務(wù)器端配置SSL安全連接
[mysqld] # 可以自行創(chuàng)建ca證書、服務(wù)端證書和KEY ssl_ca=ca.pem ssl_cert=server-cert.pem ssl_key=server-key.pem # 如果開啟,那么強(qiáng)制客戶端必須使用SSL連接;如果關(guān)閉,可以指定賬號使用SSL連接 require_secure_transport=ON
Mysql 8客戶端配置SSL安全連接
--ssl-mode=DISABLED|PREFERRED|REQUIRED|VERIFY_CA|VERIFY_IDENTITY
1.DISABLED
- 完全不使用SSL加密
- 所有通信都以明文傳輸
- 安全性最低,性能最好
- 適用于測試環(huán)境或內(nèi)部安全網(wǎng)絡(luò)
2.PREFERRED
- 默認(rèn)模式
- 嘗試使用SSL,失敗則回退到非SSL
- 對于Unix套接字連接不會(huì)加密
- 平衡了安全性和兼容性
3.REQUIRED
- 強(qiáng)制要求SSL加密
- 如果服務(wù)器不支持SSL則連接失敗
- 不驗(yàn)證證書的有效性
- 適用于需要加密但不關(guān)心證書來源的環(huán)境
4.VERIFY_CA
- 要求SSL加密
- 驗(yàn)證服務(wù)器證書是否由受信任的CA簽發(fā)
- 不驗(yàn)證主機(jī)名是否匹配
- 比REQUIRED更安全
5.VERIFY_IDENTITY
- 最嚴(yán)格的模式
- 要求SSL加密
- 驗(yàn)證CA證書
- 驗(yàn)證主機(jī)名是否與證書匹配
- 防止中間人攻擊
- 安全性最高,配置也最復(fù)雜
Mysql 8客戶端連接驗(yàn)證
服務(wù)端開啟了require_secure_transport=ON,客戶端禁用SSL連接,被拒絕
[root@centos7-05145 ~]# mysql -h 172.28.2.1 -u root -p --ssl-mode=DISABLED
Enter password:
ERROR 3159 (HY000): Connections using insecure transport are prohibited while --require_secure_transport=ON.
服務(wù)端開啟了require_secure_transport=ON,客戶端啟用SSL連接,查看連接狀態(tài)
[root@centos7-05145 ~]# mysql -h 172.28.2.1 -u root -p --ssl-mode=REQUIRED
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.4.4 MySQL Community Server - GPL
Copyright (c) 2000, 2024, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> status
--------------
mysql Ver 8.4.2 for Linux on x86_64 (MySQL Community Server - GPL)Connection id: 8
Current database:
Current user: root@192.168.5.145
SSL: Cipher in use is ECDHE-RSA-AES128-GCM-SHA256
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 8.4.4 MySQL Community Server - GPL
Protocol version: 10
Connection: 172.28.2.1 via TCP/IP
Server characterset: utf8mb4
Db characterset: utf8mb4
Client characterset: utf8mb4
Conn. characterset: utf8mb4
TCP port: 3306
Binary data as: Hexadecimal
Uptime: 2 min 44 sec
Threads: 2 Questions: 6 Slow queries: 0 Opens: 512 Flush tables: 3 Open tables: 26 Queries per second avg: 0.036
--------------
Mysql 8 創(chuàng)建使用SSL安全連接的賬號
# require ssl 強(qiáng)制賬號使用證書認(rèn)證 CREATE USER 用戶名@'%' IDENTIFIED BY 'password' require ssl; # require x509 強(qiáng)制賬號使用證書認(rèn)證 CREATE USER 用戶名@'%' IDENTIFIED BY 'password' require x509; # 修改賬號使用證書認(rèn)證 ALTER USER '用戶名'@'%' require ssl;
到此這篇關(guān)于Mysql8配置SSL安全連接的詳細(xì)指南的文章就介紹到這了,更多相關(guān)Mysql配置SSL安全連接內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL WITH AS創(chuàng)建臨時(shí)表的實(shí)現(xiàn)
在MySQL中,我們可以通過WITH AS方法創(chuàng)建臨時(shí)結(jié)果集,本文主要介紹了MySQL WITH AS創(chuàng)建臨時(shí)表的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2024-08-08
MySQL中把varchar類型轉(zhuǎn)為date類型方法詳解
這篇文章主要介紹了MySQL中把varchar類型轉(zhuǎn)為date類型方法詳解的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-07-07
解決MySQL啟動(dòng)報(bào)錯(cuò):Warning:mysqld.service changed on 
文章提示MySQL啟動(dòng)時(shí)報(bào)錯(cuò),因服務(wù)配置文件已更改,需運(yùn)行`systemctl daemon-reload`重新加載配置,隨后重啟MySQL服務(wù)以解決此問題2025-09-09
Mariadb數(shù)據(jù)庫的備份與恢復(fù)過程詳細(xì)介紹
MariaDB是一個(gè)流行的開源關(guān)系型數(shù)據(jù)庫管理系統(tǒng),備份與恢復(fù)數(shù)據(jù)是數(shù)據(jù)庫管理中非常重要的一個(gè)環(huán)節(jié),能夠保證數(shù)據(jù)的安全性和可靠性,這篇文章主要介紹了Mariadb數(shù)據(jù)庫的備份與恢復(fù)過程的相關(guān)資料,需要的朋友可以參考下2025-10-10

