為# * 在生產環境下,安全性總是無法忽視的問題,資料庫安全是重中之重,因為所有的資料都存放在資料庫中
* 當使用非加密方式連接MySQL資料庫時,在網路中傳輸的所有資訊都是明文的,可以被網路中所有人截取,敏感資訊可能會外洩。在傳送敏感資訊(如密碼)時,可以採用SSL連線的方式。
* 版本小於5.7.6時依照 MySQL 5.6 SSL設定
的方式進行。
#2. MySQL 連線方式
* socket連線
* TCP非SSL連線
* SSL安全連線
#
##SSL安全連線
#
* SSL + 密碼連線[version > MySQL 5.7.5]
* SSL + 密碼+ 金鑰連線## * SSL + 密碼+ 金鑰連線
#3. SSL 簡介
* SSL指的是SSL/TLS,其是一種為了在電腦網路進行安全通訊的加密協定。假設使用者的傳輸不是透過SSL的方式,那麼其在網路中以明文的方式進行傳輸,而這給別有用心的人帶來了可乘之機。所以,現在很多網站其實預設已經開啟了SSL功能,像是Facebook、Twtter、YouTube、淘寶等。
4. 環境[ 關閉SeLinux ]############# ##* ###system 環境#########
cat /etc/redhat-release
##[root@MySQL ~]
#已停用
#MySQL環境[
MySQL 5.7安裝# have_openssl 與 have_ssl 值皆為DISABLED表示ssl未開啟
[root@MySQL ~ ]# mysql -p'123'
mysql: [警告] 在
指令上使用密碼
您的MySQL 連線
id
版權所有(c) 2000、2017、Oracle 和
/或
其附屬公司。 保留所有權利。 附屬機構。 其他名稱可能是其各自所有者的商標。
##'\h'
'\c'
#以
清除mysql>
##選擇#
version();
中
set
(0.00 秒)
'have%ssl%'
;
in
#set
#(0.02 秒)
'port'
in
set
(0.01 秒)
'datadir'
;
/data/mysql_data/
|
在
集合
(0.01秒)
#<div class="line number47 index46 alt2">
<p style="padding: 0px; margin-top: 0px; margin-bottom: 0px; clear: both; height: auto; color: #2c2c2c; font-size: 14px; line-height: 28px; white-space: normal;"><strong><span style="font-family: '微软雅黑', 'Microsoft YaHei';">##5. SSL設定<span style="font-size: 18px;"></span></span></strong></p>
<p style="padding: 0px; margin-top: 0px; margin-bottom: 0px; clear: both; height: auto; color: #2c2c2c; font-size: 14px; line-height: 28px; white-space: normal;"> * <span style="font-family: '微软雅黑', 'Microsoft YaHei';">使用自帶工具產生SSL相關檔案<span style="font-size: 16px;"><br></span></span>## </p> <p style="padding: 0px; margin-top: 0px; margin-bottom: 0px; clear: both; height: auto; color: #2c2c2c; font-size: 14px; line-height: 28px; white-space: normal;"></p>##[root@MySQL ~]<div class="container">
<div class="line number1 index0 alt2">## /usr/local/mysql/bin/mysql_ssl_rsa_setup --datadir=/data/mysql_data<code class="bash plain">
#產生2048 位元RSA 私密金鑰
............................... ................................................................ ....+++
.....+++
#將新私鑰寫入
-----
#產生2048 位元RSA 私密金鑰
... .................................... ................................................ ................................................................ .......................... .........+++
... +++
寫入新的私鑰到
--
產生2048位元RSA私密金鑰
#.............+++
#.. ......................................... ....+++
將新的私鑰寫入
##-----
# *
-rw---- --1 root root 1679 6 月24 日20:54
.pem
#-rw- r--r-- 1 root root 1074 6 月24 日20:54
.pem
-
/data/mysql_data/client-cert
.pem
/data/mysql_data/client-key
#.pem
#<div class="line number6 index5 alt1">
<code class="bash plain">-rw----- 1 root root 1675 6月24日20:54
/data/mysql_data/private_key
.pem
/data/mysql_data/public_key
#.pem
#.
/data/mysql_data/server-cert#.pem* 重新啟動MySQL 服務
#[root@ MySQL ~]
# /etc/init.d/mysqld restart
'have%ssl%'
+---------------+--------+
# #| 有_openssl | 是 |6. SSL + 密碼連線測試
* 建立使用者並指定SSL 連線[ MySQL 5.7後建議使用create user 方式建立使用者# ]
mysql> create user
'ssl_test'
@
'%'
identified by
'123'
require SSL;
Query OK, 0 rows affected (0.00 sec)
[root@MySQL ~]
# mysql -h 192.168.60.129 -ussl_test -p'123' --ssl=0
#mysql: [Warning] Using a password on the
command
line interface can be insecure.
ERROR 1045 (28000): Access denied
for
user
'ssl_test'
@
#'192.168.60.129'
(using password: YES)
SSL: Cipher in use is DHE-RSA-AES256-SHA 表示透過SSL連線
[root@MySQL ~]
# mysql -h 192.168.60.129 -ussl_test -p'123' --ssl
mysql:[警告] 在
命令
#行介面上使用密碼可能不安全。 -ssl 已棄用,並將在未來版本中刪除
您的MySQL 連線
id
## 伺服器版本: 5.7 .18 MySQL 社群伺服器(GPL)
版權所有(c) 2000、2017、Oracle 和
/或
幫助。 輸入
'\c'
#以##mysql> \s
--------------
mysql Ver 14.14 Distrib 5.7.18,
##for
##: 12
當前數據庫:
當前用戶: ssl_test@192.168.60.129
SSL: 密碼
##in#
使用的是DHE-RSA-AES256-SHA
伺服器字元集:latin1
Db characterset: latin1
Client characterset: utf8
Conn. characters: 1
##TCP port: 3306
Uptime: 7 min 34 sec##1 29 Slow queries: 0 Opens: 112 Flush tables: 1 Open tables: 105 Queries per second avg: 105 Queries .
#7. * 建立使用者並指定X509 [ SSL+金鑰] 連線[ #MySQL 5.7後建議使用create user 方式建立使用者
]## ##mysql> create user 'X509_test'@'%'
identified by '123'
Query OK, 0 rows affected (0.00 sec)
##*
透過密碼連線測試
##*
透過密碼連線測試
command
line interface can be insecure.
ERROR can be insecure.
ERROR 10455 28000): Access denied
user
'X509_test'
@
'192.168.60.129'
#@
'192.168.60.129'
(using password: YES)
[root@MySQL ~]
mysql -h 192.168.60.129 -uX509_test -p'123' --ssl
mysql:[警告]在
#指令
#指令
##mysql:[警告]在
#指令
##mysql:[警告]在
#指令
##mysql:[警告]在##mysql:[警告]在#命令##mysql:[警告]在#指令
#上使用密碼碼## line 介面可能不安全。
##'192.168.60.129'
##
[root@MySQL ~]
#行介面上使用密碼可能不安全。 命令結尾為; 或\g.
您的MySQL 連線
## 伺服器版本: 5.7 .18 MySQL 社群伺服器(GPL)
/或
'help;'
或
'\h'
# 取得
help。 輸入
'\c'
#以
清除
目前輸入語句。 ##mysql> \s
linux-glibc2.5 (x86_64) 使用 EditLine 包裝器
##: 21
當前用戶: X509_test@192.168.60.129
#
使用的是DHE-RSA-AES256-SHA
''
#使用分隔符號: ;
伺服器版本: 5.7。 ##/IP
伺服器字元集:latin1
正常運作時間: # 18#1分 執行緒:1 問題:40 慢速查詢:0 開啟:118 更新表:1 開啟表:111 每秒平均查詢:0.036
#- ------- --------
以上是SSL連線的實例教程的詳細內容。更多資訊請關注PHP中文網其他相關文章!