MySQL開發者們已經開始使用他們自己的GUI工具,它們能夠用來和本地或遠程的MYSQL數據庫進行連接。這些工具包括MySQL Administrator、MySQL Query Browser、以及MySQL Workbench。它們都是不錯的圖形界面的工具,簡化了對MySQL數據庫的創建和操作。
使用這些工具操作遠程數據庫的問題是,它們通常要求你使MySQL對WEB接口進行監聽;而大多數MySQL管理員只會選擇對本地主機或某個套接字開啟MySQL監聽,而不會允許遠程連接。這是很好的安全習慣;可是,它讓你不花出一點點努力就別想舒舒服服地遠程使用這些GUI工具。這裡使用ssh隧道[2](tunnel)進行連接效果極好。它不僅允許高強度驗證和加密,而且對於MySQL只監聽本地連接的設定也毫不妥協。
首先,必須要保證MySQL監聽本地主機[2](默認情況下它只監聽本地套接字上的連接),這可以通過告訴MySQL允許WEB連接並重新啟動服務器來實現。MySQL應該配置成只監聽loopback接口,或者本地接口,或者WEB接口。
接下來,編輯你希望用來發起連接的主機上的~/.ssh/config文件,並插入如下內容:
Host remotesql
?Hostname webserver.domain.com
?User joe
?LocalForward *:13306 localhost:3306
這會以用戶joe連接webserver.domain.com,並且把本地系統上的13306端口轉發(forward)到webserver.domain.com的3306端口(這是標准MySQL端口)。注意我們沒有把被轉發端口和本地機器上的本地接口進行綁定,而是指向了所有接口;這就是說我們可以連上me.domain.com的13306端口(假設me.domain.com是本地工作站的名字),而不是去連接本地主機上的13306端口(這很重要,因為這些GUI工具會試圖使用一個套接字來連接本地主機,而這不是我們希望的。)現在你可以發起連接,方法是執行:
$ ssh -f -N remotesql
最後,激活MySQL的管理員賬戶,並且通過你的信任證書,讓它連接me.domain.com的13306端口(而不管它是用戶賬戶還是根賬戶)。為了正常連接,你可能不得不給[email protected]許可。
這樣做之後,你將能夠使用本地WEB上的任何一個系統,跨越Internet而又毫無風險的連接遠程數據庫(除非本地機器上防火牆規則阻止了它),這樣之後,你仍然可以使用本地的MySQL命令行工具操作遠程數據庫:
$ MySQL -u root -p -h me.domain.com -P 13306