【MySQL Workbench】如何透過TCP/IP進行SSL連線到遠端MySQL資料庫

URL Link //n.sfs.tw/15449

2021-10-24 15:05:21 By 過路君子

大家好這裡是發現這方面中文資料不完全的小編過路君子

基本上小編查到後來就直接放棄了,跑去翻英文資料去了,目前現有的中文資料太舊了。

 

 

那小編實作是用 Windows版的 MySQL Workbench去連線 Linux版的 MySQL資料庫

各位在開始前請先確認一下版本資訊,因為光是 MySQL 5.X 和 MySQL 8.X 所輸入的指令就有差異了。

那我們一樣不廢話,直接上版本表,但是由於這一次是實作在跨平台上,所以小編會特地加上該軟體安裝在哪個平台上面。

軟體名稱 版本 運行平台
MySQL Workbench 8.0.27 Windows
MySQL 8.0.26 Linux
Windows 10 21H1 Windows
CentOS 8 release 8.3.2011 Linux

 

Server端設定

首先,我們先連線到 mysql資料庫裡面,小編這邊使用 root登入。

如果各位是想要拿現有的帳號做遠端連線,等等要注意 MySQL帳號可連線 IP的設定。

要不然就會發現明明一切操作正確最後卻被 MySQL擋住不給連線。

(所有圖片點擊都可以放大、變高清)

首先先下這串指令創建一個新的使用者。

注意,這個使用者只能透過 SSL連線,嘗試使用密碼直接登入會被 MySQL拒絕。

CREATE USER 'newUser'@'%' identified by 'User123456;' require x509;

各位可將 'newUser' 和 identified by後面的字串替換成自己喜歡或習慣的名子。

identified by後面的字串是登入密碼,之後會用到,至於密碼強度要求就要看各位安裝 MySQL資料庫的時候是選擇 0, 1還是 2了。

那接下來新增一個資料庫,等等會設定權限讓這位新增的使用者能全權管理。

當然各位要拿現有的資料庫來開權限給這位使用者使用也是可以的,端看各位需求。

CREATE DATABASE userCanUse;

創建好之後授予這位使用者權限來完全使用這個資料庫,那如果各位是拿現成的資料庫則自行替換成該資料庫的名子。

 GRANT ALL PRIVILEGES ON userCanUse.* TO 'newUser'@'%';

最後我們在做最後的確認,確認使用者的登入位置有被正確設置成「%」。

SELECT User,Host FROM mysql.user;

看到了我們剛剛新增的使用者了!就可以關閉 MySQL囉~

那至於「%」、「localhost」又是什麼呢?實際上是指可以登入的位置,% 代表任何 IP位置都可以登入,localhost代表只有本機能登入。

換言之,如果當時創建使用者帳號的時候,輸入「'newUser'@'8.8.8.8'」的話,那就只能在IP為 8.8.8.8的位置進行登入,其他 IP都會被 MySQL拒絕。

 

至此 MySQL方面的準備工作就到這裡為止,可以退出 MySQL了。

等等!還沒有結束,因為我們要使用 SSL連線,所以我們要先找出 key並傳給 client端。

MySQL金鑰預設放置位置在/var/lib/mysql裡面。

而我們只需要上圖紅框中的那三個檔案,分別是「ca.pem」、「client-cert.pem」和「client-key.pem」。

要將這三個檔案傳送給客戶端的使用者,至於要怎麼傳送就是各位八仙過海 —— 各憑本事了。

這邊小小的提醒一下,如果各位是用一些軟體(例如:WinSCP)來用一般使用者連線到伺服器裡直接下載檔案,前兩個檔案可能沒問題,在下載 client-key.pem就會出問題了,因為這個檔案的權限是 600,注意注意!

確認對方有收到這三個檔案之後就可以了喔!

至於那個神奇的 PaperMC-quickstart.bat檔案是什麼呢?可以到小編的這篇文章去看看!

 

但是還有一件非常重要的事情要做,沒錯!就是開防火牆,要不然 MySQL Workbench是沒辦法連進 MySQL伺服器的。

MySQL預設使用的 port是 3306,各位檢查一下防火牆是否有允許這個 port的通過;如果沒有,則快速下達下方三個指令來開啟(要有 root權限):

firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload
firewall-cmd --zone=public --list-all

輸入完後應該會出現下方的畫面,各位確認一下是否有出現下方紅線處的文字。

這樣 Server端的準備就到此結束了,可以開始設置 Client端的設定了。

 

Client端設定

首先先到 MySQL Workbench官方下載點,選擇適合自己電腦的版本下載並安裝完成 MySQL Workbench。

安裝完成後開啟並執行。

初始畫面應該如上圖,點擊上圖紅框處的「+」。

如果各位有更改 MySQL所在的 port,那 port那欄位要跟著改成各位設定的新 port點。

還記得剛剛從伺服器端所接收的那三的檔案嗎?沒錯,就是要用在這裡的,像上圖那樣依序告知 MySQL Workbench。

如果只是一般無強制使用 SSL連線的帳號做連線,則無須對這頁做設定。

雙擊剛剛我們所創建的連線規則,進行連線。

這時輸入我們在創建使用者時候所設置的密碼。

以這邊為例,小編就輸入「User123456;」來進行連線。

看到這個畫面就代表已經跟伺服器成功取得連線了呦。

如果看到的是無法連線的紅字,請確認 MySQL是否有開啟 SSL連線的功能或是檢查是否被其他防火牆給阻擋連線了。

因為小編之前遇過本來可以連線上,結果換了一個地方,就被那個機關的防火牆給阻擋連線,導致連線失敗。

那接下來要做些什麼呢?來寫一些簡單的 SQL程式碼來做測試是否真的成功連線。

小編在此提供一個簡單的 SQL程式碼來供各位測試:

SHOW DATABASES;
USE userCanUse;

CREATE TABLE test(
Id INT PRIMARY KEY UNIQUE AUTO_INCREMENT NOT NULL,
`name` VARCHAR(50) NOT NULL);

SHOW TABLES;
INSERT INTO test VALUES (1, 'joe'), (2, 'bob'), (3, 'tom');
SELECT * FROM test;

 

 

 

後記:

小編在第一次進行連線的時候,失敗了,然後就丟著,大概過了十分鐘後才想到是不是防火牆忘了開...一查,果然沒開,這樣當然無法連線啦!