[精讚] [會員登入]
5307

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

通常MySQL伺服器都不是只提供某人連線,而是多人都可以連線進來使用,這時就不能繼續使用localhost的那種寫法

分享此文連結 //n.sfs.tw/15449

分享連結 【MySQL Workbench】如何透過TCP/IP進行SSL連線到遠端MySQL資料庫@小編過路君子
(文章歡迎轉載,務必尊重版權註明連結來源)
2021-10-25 21:02:56 最後編修
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;

 

 

 

後記:

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

END

你可能感興趣的文章

【JDA/discord bot】如何獲得訊息中的圖片和影片並儲存或轉傳 如何將訊息中的圖片或影片之類的多媒體提取出來之後,再進行相關的處理

【C】(%c, %d)解決讀取字元時的緩衝區殘留 不解決就會莫名其妙地冒出一些莫名其妙的東西

【Discord bot】(ERROR)await self.bot.wait_for() 大坑 今天真的是採到大坑,只找到解決方法,具體原因不明

【MEGAcmd】[Linux] 如何解決Unable to connect to service: error=2 用了好久的軟體突然停止一切的運作了。

【C++】使用SFML創建新視窗和新增圖標(ICON)並隱藏DOS 筆記,怕自己以後忘記怎麼創建並開啓一個新視窗

【Maven】如何夾帶檔案至Jar內以及其讀取方式 想要讀取一個外部的文字文件?Maven是你的好幫手

隨機好文

高捷少女:耐耐的新年驚喜(終) 他的話說到一半,便被一陣響亮的哭聲打住了,是從產房中的傳來的。聽起來就像嬰兒的哭聲。 婕兒、小穹跟艾米也被哭聲吵醒,婕兒揉揉眼睛,看向呆若木雞的耐耐父女。「剛剛的聲音,該不會是……」

婕兒──她的青春② 艾米直搖頭。「我真不敢相信,小穹妳都二十幾歲了,為什麼能想出這種故事呀?」「婕兒也是二十幾歲啊,妳想想她現在是什麼樣子?」小穹不滿地指向火車的方向。

【歌評】蓮台野夜行 - 幻視之夜 ~ Ghostly Eyes 若有什麼是在聽到boss曲前的鋪襯,那一定就是每個系列的道中曲

【數學】徐氏數學簡明講義(三) 第二章 直線與園 P2.1-15 Q6 6.平面上有一四邊形ABCD其頂點分別為(0,0)、(2,1)、(3,4)、(-1,5),此平面上另有P,Q兩點,求 :

【數學】線性規劃——題型演練 某公司招聘新員工,共有800人應徵參加筆試。筆試場地借用某高中教室,該校租借的大教室有42間,每間可容納40人,每間租金