Mysql8配置SSL安全連接的詳細指南
概述
Mysql 8 默認啟用SSL安全連接,也可以強制必須啟用。建議手動生成自簽名證書和key并配置到服務(wù)端和客戶端路徑里,也可以直接使用mysql默認生成的。
前提條件
- 使用OpenSSL編譯的MySQL服務(wù)器
- 官網(wǎng)mysql安裝包已經(jīng)集成了,支持ssl自簽名證書
- 自簽名證書文件系統(tǒng)自動生成,默認在數(shù)據(jù)存儲目錄下
[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
因為是自簽名證書,啟動日志中會報一條警告信息
[Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
Mysql 8手動配置SSL安全連接
修改配置文件
[mysqld] # 強制所有網(wǎng)絡(luò)連接使用ssl。socket不受限制(默認就是安全狀態(tài)。如果客戶端強制使用SSL連接,允許登錄,但會提示建議取消SSL的信息) require_secure_transport=ON
修改運行參數(shù)
進入數(shù)據(jù)庫手動設(shè)置正在運行的數(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 # 如果開啟,那么強制客戶端必須使用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
- 默認模式
- 嘗試使用SSL,失敗則回退到非SSL
- 對于Unix套接字連接不會加密
- 平衡了安全性和兼容性
3.REQUIRED
- 強制要求SSL加密
- 如果服務(wù)器不支持SSL則連接失敗
- 不驗證證書的有效性
- 適用于需要加密但不關(guān)心證書來源的環(huán)境
4.VERIFY_CA
- 要求SSL加密
- 驗證服務(wù)器證書是否由受信任的CA簽發(fā)
- 不驗證主機名是否匹配
- 比REQUIRED更安全
5.VERIFY_IDENTITY
- 最嚴格的模式
- 要求SSL加密
- 驗證CA證書
- 驗證主機名是否與證書匹配
- 防止中間人攻擊
- 安全性最高,配置也最復(fù)雜
Mysql 8客戶端連接驗證
服務(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 強制賬號使用證書認證 CREATE USER 用戶名@'%' IDENTIFIED BY 'password' require ssl; # require x509 強制賬號使用證書認證 CREATE USER 用戶名@'%' IDENTIFIED BY 'password' require x509; # 修改賬號使用證書認證 ALTER USER '用戶名'@'%' require ssl;
到此這篇關(guān)于Mysql8配置SSL安全連接的詳細指南的文章就介紹到這了,更多相關(guān)Mysql配置SSL安全連接內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL中列轉(zhuǎn)行和行轉(zhuǎn)列總結(jié)解決思路
最近工作中用到了好幾次列轉(zhuǎn)行,索性做個小總結(jié),下面這篇文章主要給大家介紹了關(guān)于MYSQL如何列轉(zhuǎn)行的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2023-01-01MySQL 聯(lián)合索引與Where子句的優(yōu)化 提高數(shù)據(jù)庫運行效率
網(wǎng)站系統(tǒng)上線至今,數(shù)據(jù)量已經(jīng)不知不覺上到500M,近8W記錄了。涉及數(shù)據(jù)庫操作的基本都是變得很慢了,這篇文章主要是說明配置并不是數(shù)據(jù)庫操作慢的主要原因2012-01-01高并發(fā)狀態(tài)下Replace Into造成的死鎖問題解決
本文主要介紹了高并發(fā)狀態(tài)下Replace Into造成的死鎖問題解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-01-01兩大步驟教您開啟MySQL 數(shù)據(jù)庫遠程登陸帳號的方法
在工作實踐和學習中,如何開啟 MySQL 數(shù)據(jù)庫的遠程登陸帳號算是一個難點的問題,以下內(nèi)容便是在工作和實踐中總結(jié)出來的兩大步驟,能幫助DBA們順利的完成開啟 MySQL 數(shù)據(jù)庫的遠程登陸帳號。2011-03-03Mysql存儲過程循環(huán)內(nèi)嵌套使用游標示例代碼
本節(jié)主要介紹了Mysql存儲過程循環(huán)內(nèi)如何嵌套使用游標,詳細實現(xiàn)如下,需要的朋友不要錯過2014-08-08