[精讚] [會員登入]
4566

【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

你可能感興趣的文章

【ESXI & Oepnwrt】基本錯誤處理 Oepnwrt 為一個自由度超高的軟體,很多事情都能請其幫忙完成,但也因此很複雜,這邊簡單的介紹幾個錯誤的處理方式

【C】〔無條件捨去〕如何忽略float數據 直接儲存成int型態(數據100%不失真) a148: You Cannot Pass?! 解題時所意外研究出來的神奇寫法,懂了原理之後要自行改寫成四捨五入或無條件進位應該就簡單了吧!

【Wickct】(link) <a> 如何新增超連結 簡單來說有兩種方式,小編個人比較偏好 的方法

【Maven】如何創建一個簡單可部屬的WAR檔 滿重要的一個大功能,在使用JAVA網頁伺服器的時候一定會需要這個WAR檔來進行部屬

【Python3】11 - 字典(Dictionary)的使用範例 python3的幾個字典使用範例,改寫自他人perl的範例

【Discord bot 2.0.1】(discord.ui.View)如何將舊機器人升級至目前最新版本 很多時候升級軟體是為了讓別人覺得你的程式很先進,但這次卻是因為要使用某個新功能

我有話要說

>>

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

訪客留言

[無留言]

隨機好文

【歌評】蓮台野夜行 - 魔術師梅莉(魔術師メリー)  對於同一首歌每一個人都有不同的見解,看看別人對於這一首歌的看法,說不定就可以聽出這首歌想要表達的事情!

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

艾米莉亞和高捷戀旅3① 「既然艾米莉亞小姐也來了,就把那個拿出來吧。」美麗島捷運商店的負責人說完,一名工作人員推著一個大箱子進入辦公室。他將箱子打開,將裡面的東西抬出來。艾米張大嘴巴

小穹‧動畫化‧體驗記① 某個星期六的下午,娟姊所在的某間咖啡廳內,傳來了一陣雀躍的交談聲。「這是當然的啊。」娟姊高興地說:「上級真是太不夠意思了,居然現在才告訴我。」「為執行長說您跟她們一定會同意,所以才事先決定好計畫的大要

【有趣玩物】4D Toys 用三維的視野探索未知的四維世界 在三維的我們看到的四維物體的互動是怎麼樣子的呢?這遊戲光是看看就超級有趣~