久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

Ubuntu上怎么使用SSL遠程連接MySQL服務器

139次閱讀
沒有評論

共計 5735 個字符,預計需要花費 15 分鐘才能閱讀完成。

今天丸趣 TV 小編給大家分享一下 Ubuntu 上怎么使用 SSL 遠程連接 MySQL 服務器的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

先決條件 (Prerequisite)

對于本文,需要安裝兩個 Linux Ubuntu 18.04 實例。

在其中一臺 Ubuntu 計算機上,使用“如何在 Ubuntu 18.04 上安裝 MySQL”頁面中的指南安裝 MySQL 并配置 root 用戶。

在第二臺計算機上,使用以下命令安裝 MySQL 客戶端:

sudo apt install mysql-client

sudo apt 安裝 mysql 客戶端

否則,當嘗試連接到遠程 MySQL 服務器時,您將收到以下消息:

sudo: mysql: command not found

sudo:mysql:找不到命令

     

在本文中,MySQL 服務器所在的計算機的名稱將稱為 SSLServer1,從中我們將建立與 MySQL 服務器的安全 SSL 連接的計算機的名稱將稱為 SSLServer2。

檢查 SSL 狀態 (Checking status of SSL)

因此,讓我們開始為 SSLServer1 計算機上 MySQL 服務器配置 SSL。首先,讓我們檢查遠程 MySQL 服務器實例上 SSL 的當前狀態。

使用以下命令登錄到 MySQL 實例:

mysql -u root -p -h 127.0.0.1

mysql - u 根 -p -h 127.0.0.1

     

輸入 root 用戶的密碼,然后按鍵盤上的 Enter 鍵。

登錄后,鍵入并執行以下命令:

SHOW VARIABLES LIKE‘%ssl%’;

顯示變量,例如 %ssl%;

根據計算機上安裝 MySQL 版本,您可以獲得不同的結果。如果運行的是 MySQL 服務器 5.7.27 及以下版本,則可能會得到以下結果:

     

     

可以看出,禁用了 have_openssl 和 have_ssl 變量。要確認當前連接未使用 SSL,請執行以下操作:

\s

\ s

or

要么

status

狀態

     

輸出結果將類似于以下內容:

————–
mysql Ver 14.14 Distrib 5.7.29, for Linux (x86_64) using EditLine wrapper
Connection id: 3
Current database:
Current user: root@localhost
SSL: Not in use
Current pager: stdout
Using outfile:”
Using delimiter: ;
Server version: 5.7.29-0ubuntu0.18.04.1 (Ubuntu)
Protocol version: 10
Connection: 127.0.0.1 via TCP/IP
Server characterset: latin1
Db characterset: latin1
Client characterset: utf8
Conn. characterset: utf8
TCP port: 3306
Uptime: 10 min 10 sec
Threads: 1 Questions: 6 Slow queries: 0 Opens: 106 Flush tables: 1 Open tables: 99 Queries per second avg: 0.009
————–

——————
適用于 Linux(x86_64)的 mysql Ver 14.14 Distrib 5.7.29,使用 EditLine 包裝器
連接 ID:3
當前數據庫:
當前用戶:root @ localhost
SSL:未使用
當前尋呼機:標準輸出
使用 outfile:”
使用定界符:;
服務器版本:5.7.29-0ubuntu0.18.04.1(Ubuntu)
協議版本:10
連接:通過 TCP / IP 的 127.0.0.1
服務器字符集:latin1
DB 字符集:latin1
客戶端特征集:utf8
康涅狄格州字符集:utf8
TCP 端口:3306
正常運行時間:10 分鐘 10 秒
線程:1 問題:6 慢查詢:0 打開:106 刷新表:1 打開表:每秒平均查詢 99 次:0.009
——————

     

從上圖可以看出,該連接未使用 SSL。

確定當前與 MySQL 服務器的連接是否使用加密的另一種方法是檢查 Ssl_cipher 狀態變量的會話值:

SHOW SESSION STATUS LIKE‘Ssl_cipher’;

顯示會話狀態,例如“Ssl_cipher”;

如果該值為空,則表明當前連接未使用加密:

     

在當前連接使用加密的情況下,該值將不會為空,如下所示:

     

注意:我使用的是 MySQL 5.7.29 版本,默認情況下啟用了 SSL,但在此示例中,我通過修改 my.cnf 文件以顯示 SSL 的禁用狀態來禁用 SSL:

     

在此配置文件中,我輸入了以下命令來禁用 SSL:

skip_ssl

skip_ssl

     

要啟用 SSL 并生成適當的證書和密鑰文件,可以使用 mysql_ssl_rsa_setup 實用程序:

sudo mysql_ssl_rsa_setup –uid=mysql

sudo mysql_ssl_rsa_setup –uid = mysql

默認情況下,MySQL 在以下位置存儲 SSL 證書:/ var / lib / mysql

讓我們通過執行以下命令進行檢查:

sudo find /var/lib/mysql/ -name‘*.pem’

sudo 查找 / var / lib / mysql / -name * .pem

Ubuntu 上怎么使用 SSL 遠程連接 MySQL 服務器     

但是,如果您安裝了 MySQL 5.7.28 及更高版本,則將在 / var / lib / mysql 位置上自動生成 SSL 認證,并在啟動 MySQL 時啟用 SSL 加密:

Ubuntu 上怎么使用 SSL 遠程連接 MySQL 服務器     

Ubuntu 上怎么使用 SSL 遠程連接 MySQL 服務器     

配置遠程 MySQL 服務器 (Configuring remote MySQL server)

既然我們已經啟用了 SSL,那么 MySQL 配置的下一步就是啟用(允許)遠程連接。默認情況下,MySQL 配置為偵聽來自其安裝機器的連接,并且僅接受來自本地主機 AKA 127.0.0.1 IP 地址的連接。

如果現在嘗試從客戶端計算機(SSLServer2)連接到位于 SSLServer1 計算機上 MySQL,我們可能會收到以下錯誤消息:

ERROR 2003 (HY000): Can’t connect to MySQL server on (111)

錯誤 2003(HY000):無法連接到(111)上 MySQL 服務器

Ubuntu 上怎么使用 SSL 遠程連接 MySQL 服務器     

要允許從任何遠程 IP 地址連接到 MySQL 服務器,請在 MySQL 配置文件 /etc/mysql/my.cnf 中添加以下內容:

bind-address = 0.0.0.0

綁定地址 = 0.0.0.0

Ubuntu 上怎么使用 SSL 遠程連接 MySQL 服務器     

現在,重新啟動 MySQL 服務,以使更改生效:

sudo service mysql restart

sudo 服務 mysql 重新啟動

Ubuntu 上怎么使用 SSL 遠程連接 MySQL 服務器     

當我們再次嘗試連接到遠程 MySQL 服務器時,我們將收到一條錯誤消息:

ERROR 1045 (28000): Access denied for user (using password: YES)

錯誤 1045(28000):拒絕用戶訪問(使用密碼:是)

Ubuntu 上怎么使用 SSL 遠程連接 MySQL 服務器     

當前,所有 MySQL 用戶都配置為從 MySQL 服務器本地連接。要連接到遠程 MySQL 服務器,您將需要使用客戶端計算機的 IP 地址創建一個新用戶,在本例中,我們需要 SSLServer2 計算機的 IP 地址。

要在終端類型中查看機器的 IP 地址(SSLServer2),然后執行以下命令:

Ifconfig

Ifconfig

Ubuntu 上怎么使用 SSL 遠程連接 MySQL 服務器     

現在,當我們獲得所有必要的信息時,讓我們通過添加 REQUIRE SSL 子句,創建一個可以通過安全連接連接到遠程 MySQL 的用戶:

CREATE USER‘SSL_USER’@

CREATE USER SSL_USER @

創建用戶后,讓我們授予他訪問所有遠程 MySQL 數據庫的所有權限。

執行以下命令:

GRANT ALL ON *.* TO‘SSL_USER’@

全部授予 *。* TO SSL_USER @

要立即應用這些設置,請執行以下操作:

FLUSH PRIVILEGES;

沖洗特權;

在 SSLServer1 計算機上還需要完成的另一件事是將 require_secure_transport 選項添加到 my.cnf 文件并將其設置為 ON。

Ubuntu 上怎么使用 SSL 遠程連接 MySQL 服務器     

這要求使用 SSL 建立所有遠程連接。

之后,重新啟動 MySQL 服務,以應用新設置:

sudo service mysql restart

sudo 服務 mysql 重新啟動

這樣,我們就允許 SSL_USER 從遠程位置進行連接。為了確認,讓我們用 SSL_USER 連接從 SSLServer2 機。

在 SSLServer2 計算機上,打開終端并執行以下命令:

mysql -u SSL_USER -p -h

mysql -u SSL_USER -p -h

Ubuntu 上怎么使用 SSL 遠程連接 MySQL 服務器     

輸入 SSL_USER 的密碼后,您將能夠連接到位于 SSLServer1 機器上的遠程 MySQL 服務器:

Ubuntu 上怎么使用 SSL 遠程連接 MySQL 服務器     

現在,鍵入 \ s 確認服務器狀態并確認您正在使用安全連接:

Ubuntu 上怎么使用 SSL 遠程連接 MySQL 服務器     

要確認 MySQL 服務器僅接受安全連接并拒絕不安全,請嘗試使用相同的憑據進行連接,但這一次在連接字符串中添加–ssl-mode = disabled 命令:

mysql -u SSL_USER -p -h –ssl-mode=disabled

mysql -u SSL_USER -p -h –ssl-mode = 禁用

執行后,可能會出現以下錯誤:

ERROR 1045 (28000): Access denied for user‘SSL_USER’@’SSLServer2_IP’(using password: YES)

錯誤 1045(28000):用戶 SSL_USER @ SSLServer2_IP 的訪問被拒絕(使用密碼:是)

Ubuntu 上怎么使用 SSL 遠程連接 MySQL 服務器     

到目前為止,您已經為 MySQL 服務器設置了由本地生成的證書頒發機構(CA)簽名的 SSL 證書,這足以為傳入的連接提供安全的加密。

為了提供 SSLServer1 和 SSLServer2 計算機之間的完全信任關系,將從 SSLServer1 計算機復制帶有客戶端證書和客戶端密鑰的 CA 證書到 SSLServer2 計算機,還將 SSL_USER 修改為需要信任證書。

首先在 SSLServer2 機器上,創建一個文件夾,將在其中放置客戶端文件:

mkdir ~/ssl-client

mkdir?/ ssl-client

使用 SCP 或 SFTP 將傳輸文件從一臺機器安全保護到另一臺機器上,或僅使用 cat 命令從 SSLServer1 機器上的 CA 證書,client-cert.pem 和 client-key.pem 文件中讀取和復制內容,然后創建這些文件并將內容粘貼到 SSLServer2 計算機上:

Ubuntu 上怎么使用 SSL 遠程連接 MySQL 服務器     

復制適當的文件后,更改 SSL_USER,并放置 REQUIRE X509 子句:

ALTER USER‘SSL_USER’@

ALTER USER SSL_USER @

現在,當使用 SSL_USER 用戶連接到遠程 MySQL 服務器時,必須指定–ssl-key 和–ssl-cert 選項,也建議這樣做,但不需要指定–ssl-ca 選項。如果我們在未指定客戶端證書的情況下連接到遠程 MySQL 服務器:

mysql -u SSL_USER1 -p -h

mysql -u SSL_USER1 -p -h

可能會出現以下錯誤消息:

ERROR 1045 (28000): Access denied for user‘SSL_USER’@’SLLServer2_IP’(using password: YES)

錯誤 1045(28000):用戶 SSL_USER @ SLLServer2_IP 的訪問被拒絕(使用密碼:是)

讓我們通過在連接字符串中添加–ssl-ca,–ssl-cert 和–ssl-key 選項來指定適當的客戶端證書,以指向?/ ssl-client 目錄下的文件:

mysql -u SSL_USER -p -h SSLServer1_IP –ssl-ca=~/ssl-client/ca.pem –ssl-cert=~/ssl-client/client-cert.pem –ssl-key=~/ssl-client/client-key.pem

mysql -u SSL_USER -p -h SSLServer1_IP –ssl-ca =?/ ssl-client / ca.pem –ssl-cert =?/ ssl-client / client-cert.pem –ssl-key =?/ ssl-client / 客戶端密鑰

按下 Enter 鍵后,您應該成功連接到遠程 MySQL 服務器:

Ubuntu 上怎么使用 SSL 遠程連接 MySQL 服務器     

每次要連接到遠程 MySQL 服務器時,使用–ssl-ca,–ssl-cert 和–ssl-key 選項并輸入相關文件的路徑是一項整齊且耗時的工作,因此讓我們進行優化和改進連接可用性。

在 SSLServer2 機器中,如果 my.cnf 文件在以下位置不存在:

/etc/my.cnf

/etc/my.cnf

/etc/mysql/my.cnf

/etc/mysql/my.cnf

/usr/etc/my.cnf

/usr/etc/my.cnf

~/.my.cnf

?/ .my.cnf

我們可以在主目錄中創建一個:

~/.my.cnf:

?/ .my.cnf:

執行以下命令:

nano ~/.my.cnf

納米?/ .my.cnf

并在.my.cnf 文件中粘貼并保存以下內容:

[client]
ssl-ca = ~/ssl-client/ca.pem
ssl-cert = ~/ssl-client/client-cert.pem
ssl-key = ~/ssl-client/client-key.pem

[客戶]
ssl-ca =?/ ssl-client / ca.pem
ssl-cert =?/ ssl-client / client-cert.pem
ssl-key =?/ ssl-client / client-key.pem

Ubuntu 上怎么使用 SSL 遠程連接 MySQL 服務器     

現在,您可以連接到遠程 MySQL 服務器,而無需在連接字符串中添加–ssl-ca,–ssl-cert 和–ssl-key 選項:

mysql -u SSL_USER1 -p -h

mysql -u SSL_USER1 -p -h

Ubuntu 上怎么使用 SSL 遠程連接 MySQL 服務器     

以上就是“Ubuntu 上怎么使用 SSL 遠程連接 MySQL 服務器”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,丸趣 TV 小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注丸趣 TV 行業資訊頻道。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-13發表,共計5735字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 玉田县| 桐柏县| 栖霞市| 大姚县| 寻乌县| 汉源县| 磴口县| 蛟河市| 资溪县| 临湘市| 厦门市| 扎赉特旗| 苏尼特右旗| 宜丰县| 铁岭县| 道真| 贵州省| 兰考县| 历史| 洪雅县| 当涂县| 周至县| 集贤县| 合江县| 嘉峪关市| 韶山市| 秦安县| 怀安县| 九台市| 汝州市| 祁门县| 额尔古纳市| 鄂州市| 兴宁市| 泌阳县| 盘锦市| 景洪市| 溧水县| 昌黎县| 阳山县| 榆社县|