[精讚] [會員登入]
4417

【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

你可能感興趣的文章

【Docker hub】[Linux]以IPv6來pull容器(container)吧! 在一個 IPv6 還不盛行的年代,做事情總是特別麻煩

【C++】SFML安裝於Microsoft Visual Studio 2019 此方法僅適用單個C++專案,因為一次就適用整台電腦的方式有人寫了,而且寫得非常不錯。

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

【Linux】[CentOS 8] How to update sudo instruction The last time I wanted to update the sudo command should be 2017, right? It's 2021 in a blink of an

【Maven】如何創建一個簡單可執行的JAR檔 滿重要的一個小功能,畢竟有時候是要傳遞的是JAR檔,而不是直接透過Maven直接部屬之類的

【Wicket】[CSP] Content-Security-Policy & Content-Security-Policy-Report-Only Wicket 預設開啟的,所以如果要加載外部資源甚至是同源資源都會被擋下。

我有話要說

>>

限制:留言最高字數1000字。 限制:未登入訪客,每則留言間隔需超過10分鐘,每日最多5則留言。

訪客留言

[無留言]

隨機好文

高捷少女:地下城的探險少女① 婕兒心中一奇,便走上前看著仔細。那塊凹進去的地方中心大約三公分厚,越往邊緣就越淺,圓型直徑十五公分。婕兒拿出銅盤對比一下,發現兩者大小竟然一致,銅盤似乎能夠完整的嵌進去。     婕兒看著凹槽,心中

高捷少女:購票大作戰① 「各位乘客,本班機即將降落,感謝各位乘客的搭乘……」隨著空中小姐的廣播音,那架飛機逐漸降落在地面,裡面的乘客們也紛紛開始整理自己的行李。 那個有著歐美人五官的少女抓緊包包,看著外面的小港機場,臉上緩緩

高捷少女:購票大作戰(終) 完了。 這下真的完了! 艾米腦內所有的思考中樞,同時發出了淒厲的吶喊。完蛋啦!這下真的被揭穿了啦!! 「那……那是因為……」艾米結結巴巴的說:「因為……

高捷少女:美麗島的守護者③ 小雅閉上眼睛,思索在高捷發生的點點滴滴。她心意已決,在高捷的日子的確也有快樂的部分,不過她相信換個方向是更好的決定。有關高捷的所有美好回憶,小雅決定保留在心裡就好,繼續在高捷工作只會讓自己更痛苦而已,

高捷少女:耐耐的新年驚喜④ 「雖然夫人一直有在保養身體,可是年紀畢竟不小了,醫生曾經說過,不管是不是假性陣痛,一旦夫人有感覺了便立刻送到醫院。」管家爺爺說:「我們已經打電話給附近的大型醫院,救護車很快便會來到這裡。」「去看伯母吧