close

上一篇講到在特殊的環境:

狀況A環境2.png

在這個情況下,本機的開發環境無法直接連到QT的Database,必須透過跳板的設定才行。

不過我們想要連線QT測試環境的DB前,有幾件前提是必須達成的,我們來一一檢視:

  1. 我們的本機電腦可以透過ssh的方式連到Linux系統的跳板機並可成功登入。

  2. Linux系統的跳板機可以直接連線到DB的機器,並且可成功登入DB系統。

第一點很好確認,問題是第二點,目前最好的確認方式是透過指令來測試連線,也就是說:

  1. 先利用ssh登入Linux系統(不需要最高權限)。

  2. 在Linux系統下指令連線DB。

這個因為要在Linux上下指今,而且每個資料庫的連線方式都不一樣,所以只能大家各自努力了。

我們假設已經達成上述的二個前提,接下來我們就要來實作跳板了,為了解釋方便,我們將上圖給予IP後,如下圖:

狀況A環境2有IP.png

 

在實作前,我們大概來瞭解一下等一下會發生的事:

等一下我們會

  1. 透過192.168.1.1的ssh,連接到172.16.1.1的Linux系統上,此時是透過ssh的22 port連入。
  2. 再來設定好跳板後,我們會透過172.16.1.1的3306 port(假設是用MySQL的資料庫,所以Port是3306),連接到172.16.31.2。

所以172.16.1.1的3306 port可以不用開啟。

說了這麼多,重點是該如何實作,所以接下來我們來實作吧!!

準備工具:Putty(Windows),終端機程式(Linux base or MAC)

 

下列步驟適用Windows系統:

  1. 開啟Putty並輸入連線資料

  1. 左方Menu切換到Connection→SSH→Tunnels,並輸入資料(參考下方圖示)

  • 這個設定的意義分別是:當我們使用本機的13306Port時,請幫我們導向176.16.31.2:3306。

Source port : 指定本機的Port

Destination : 連到那一台機器的那個Port

  1. 記得按下「Add」的按鈕,看到下方框框內的資料,代表設定成功。

  1. 按下Open開啟連線。

  2. 輸入登入的帳號密碼,登入172.16.1.1成功時,即代表跳板設定完成。

下列步驟適用Linux base系統:

  1. 開啟終端機程式

  2. 輸入指令:(@前的root代表跳板機的帳號,需自行變更)

ssh root@172.16.1.1 -L 13360:172.16.31.2:3360

其中-L 為本次指令的重點,跟Putty設定的Local是相同的意思。

  1. 輸入密碼後,登入172.16.1.1成功時,即代表跳板設定完成

 

...設定完成了,好像超簡單的。沒錯,就是這麼簡單,讓我們來看看設定完成後要怎麼使用。

 

跳板的應用

上述不管是指令,或是Putty的設定,主要的設定意義是:

凡是呼叫本機 (loaclhost)的13306 Port,都會被導到172.16.31.2的3306 Port;其中13306的Port並無特別意義,只要本機沒有在使用的Port皆可。

 

所以在GUI設定上的如下:

原本的設定

 

變更為(注意Hostname還是指向本機)

  • 當我們指定本機的13306 Port時,因為跳板設定的關係,這個指令會從本機送到172.16.1.1(因為我們SSH是連到這一台主機)後,再連線到172.16.31.2(因為我們是這樣設定的),所以剛剛說要確認172.16.1.1可以連線至172.16.31.2的資料庫的原因即為如此。

透過這樣的設定,我們可以直接利用GUI工具,來操控遠端的資料庫;也可以利用GUI工具所提供的資料庫備份功能,備份完後將資料直接存在本機。

這裡要注意的一點,因為跳板是透過172.16.1.1來傳送資料的,所以如果本機與172.16.1.1的連線被中斷的話,那麼跳板設定也會跟著失效。不過因為本機與172.16.1.1有資料在傳輸,所以也不用擔心那putty視窗什麼事都沒做時,會被踢出去。

 

跳板的還應用不只如此,也可以應用在程式上,下方是程式應用的範例:

原本的設定

變更為

單純變更資料庫連線的設定,就可以將資料庫的來源指向QT環境,同時可以在本機進行Deubg、停在中斷點、看變數資料...等。不過要注意一點,「儘量不要有寫入的動作」,因為你現在動的資料庫已經不是本機的資料庫了,如果是在正式機上,就更要小心,尤其要注意程式是否有寫定時機制去寫入資料,如果有,記得先拿掉後再啟動程式,否則你真的會被叫去罰站。

arrow
arrow

    JAVA Programmer 發表在 痞客邦 留言(0) 人氣()