MySQL作為數(shù)據(jù)庫(kù),簡(jiǎn)直就是易用的代名詞,絕大多數(shù)數(shù)據(jù)庫(kù)驅(qū)動(dòng)的web應(yīng)用程序都選擇它做為自己的數(shù)據(jù)庫(kù)。正因如此,MySQL被應(yīng)用于很多WEB服務(wù)器上。
雖然說MySQL的命令行工具確實(shí)有用,但要它完成任務(wù)有時(shí)實(shí)在是在跟時(shí)間過不去,除非你對(duì)SQL語法已經(jīng)通吃,熟到爐火純青的地步。正是由于這個(gè)原因,像phpMyAdmin之類的工具已經(jīng)變得如此流行。
MySQL開發(fā)者們已經(jīng)開始使用他們自己的GUI工具,它們能夠用來和本地或遠(yuǎn)程的MYSQL數(shù)據(jù)庫(kù)進(jìn)行連接。這些工具包括MySQL Administrator、MySQL Query Browser、以及MySQL Workbench。它們都是不錯(cuò)的圖形界面的工具,簡(jiǎn)化了對(duì)MySQL數(shù)據(jù)庫(kù)的創(chuàng)建和操作。
使用這些工具操作遠(yuǎn)程數(shù)據(jù)庫(kù)的問題是,它們通常要求你使MySQL對(duì)WEB接口進(jìn)行監(jiān)聽;而大多數(shù)MySQL管理員只會(huì)選擇對(duì)本地主機(jī)或某個(gè)套接字開啟MySQL監(jiān)聽,而不會(huì)允許遠(yuǎn)程連接。這是很好的安全習(xí)慣;可是,它讓你不花出一點(diǎn)點(diǎn)努力就別想舒舒服服地遠(yuǎn)程使用這些GUI工具。這里使用ssh隧道[2](tunnel)進(jìn)行連接效果極好。它不僅允許高強(qiáng)度驗(yàn)證和加密,而且對(duì)于MySQL只監(jiān)聽本地連接的設(shè)定也毫不妥協(xié)。
首先,必須要保證MySQL監(jiān)聽本地主機(jī)[2](默認(rèn)情況下它只監(jiān)聽本地套接字上的連接),這可以通過告訴MySQL允許WEB連接并重新啟動(dòng)服務(wù)器來實(shí)現(xiàn)。MySQL應(yīng)該配置成只監(jiān)聽loopback接口,或者本地接口,或者WEB接口。
接下來,編輯你希望用來發(fā)起連接的主機(jī)上的~/.ssh/config文件,并插入如下內(nèi)容:
Host remotesql
?Hostname webserver.domain.com
?User joe
?LocalForward *:13306 localhost:3306
|
這會(huì)以用戶joe連接webserver.domain.com,并且把本地系統(tǒng)上的13306端口轉(zhuǎn)發(fā)(forward)到webserver.domain.com的3306端口(這是標(biāo)準(zhǔn)MySQL端口)。注意我們沒有把被轉(zhuǎn)發(fā)端口和本地機(jī)器上的本地接口進(jìn)行綁定,而是指向了所有接口;這就是說我們可以連上me.domain.com的13306端口(假設(shè)me.domain.com是本地工作站的名字),而不是去連接本地主機(jī)上的13306端口(這很重要,因?yàn)檫@些GUI工具會(huì)試圖使用一個(gè)套接字來連接本地主機(jī),而這不是我們希望的。)現(xiàn)在你可以發(fā)起連接,方法是執(zhí)行:
$ ssh -f -N remotesql |
最后,激活MySQL的管理員賬戶,并且通過你的信任證書,讓它連接me.domain.com的13306端口(而不管它是用戶賬戶還是根賬戶)。為了正常連接,你可能不得不給user@localhost.localdomain許可。
這樣做之后,你將能夠使用本地WEB上的任何一個(gè)系統(tǒng),跨越Internet而又毫無風(fēng)險(xiǎn)的連接遠(yuǎn)程數(shù)據(jù)庫(kù)(除非本地機(jī)器上防火墻規(guī)則阻止了它),這樣之后,你仍然可以使用本地的MySQL命令行工具操作遠(yuǎn)程數(shù)據(jù)庫(kù):
$ mysql -u root -p -h me.domain.com -P 13306 |


