2015-05-06 39 views
0

我有一個遠程網絡服務器運行一個mysql數據庫。 現在我正在使用SSH來進行任何服務器端管理,並且我經常訪問MySQL。我想知道是否可能讓我創建一個腳本,將ssh放入服務器,並且如果在命令行上使用「-sql」(可能會更改)運行,它將轉到mysql。SSH直接進入MySQL服務器

是我迄今爲止所取得:

#!/bin/bash 
if [ "$1" == "-l" ]; then 
    ssh [email protected] //local address for privacy; 
    mysql -u root -p; 
else 
    ssh [email protected] 
fi 

這將導致一個SSH會話,當它結束時我的計算機會嘗試創建本地計算機上的MySQL連接。

#!/bin/bash 
if [ "$1" == "-l" ]; then 
    ssh [email protected] 'mysql -u root -p'; 
else 
    ssh [email protected] 
fi 

這導致密碼請求,然後什麼也沒有。我假設它是因爲與一個命令使用ssh需要一個響應,然後關閉連接。

有沒有辦法做到這一點,我意識到它是任何顯著意義不大,但很好玩提前玩弄

感謝

回答

5

mysql命令只執行交互,如果是輸入是一個終端。使用命令參數運行ssh時,通常不會在服務器上分配僞tty。所以mysql只是在不顯示提示的情況下處理其標準輸入。

使用-t選項強制此:

ssh -t [email protected] 'mysql -u root -p' 
0

嘗試這樣的。使用該命令輸入mysql密碼。所以你不必輸入密碼。

ssh [email protected] 'mysql --user="root" --password="password" --database="database" --execute="My Query;"' 

另外我建議你設置基於密鑰的SSH認證。因此你也可以避免每次輸入ssh密碼。你可能要考慮解決這種訪問問題的

2

一種選擇是通過SSH使用隧道設施:

ssh -l user -L 33306:192.168.0.101:3306 192.168.0.101 

也許

ssh -l user -L 33306:127.0.0.1:3306 192.168.0.101 

這將創建一個端口你的本地機器(33306)通過遠程機器上的mysql端口(3306)。

然後在本地機器上,你運行mysql的本地副本:

mysql --port=33306 -u root -p 

應該通過隧道端口連接到數據庫連接。

+0

由於您不限制使用命令行客戶端,所以隧道是這裏的一種方式。您也可以連接任何類型的應用程序。 – tadman

相關問題