直播中
前言
phpMyAdmin可以管理整個(gè)MySQL服務(wù)器(需要超級(jí)用戶),也可以管理單個(gè)數(shù)據(jù)庫(kù)。為了實(shí)現(xiàn)后一種,你
將需要合理設(shè)置MySQL用戶,他只能對(duì)允許的數(shù)據(jù)庫(kù)進(jìn)行讀/寫。那要等到你看過MySQL手冊(cè)中相關(guān)的部分。
快速安裝
將phpMyAdmin軟件包解到一個(gè)目錄下。
打開config.inc.php3,根據(jù)你的環(huán)境,修改$cfgServers[1]['host'],$cfgServers[1]['user']和
$cfgServers[1]['password']的值。可以看一下下面的配置部分所列出的所有可配置的變量,根據(jù)情
況對(duì)其它參數(shù)進(jìn)行修改。
建議在安裝完phpMyAdmin之后,對(duì)其目錄進(jìn)行保護(hù)(除非在一個(gè)企業(yè)內(nèi)部網(wǎng)上)。例如,可以使用HTTP-AUTH(用一個(gè).htaccess文件)。
在瀏覽器中打開文件:安裝主機(jī)域名/安裝目錄/index.php3。phpMyAdmin應(yīng)該顯示一個(gè)歡迎屏和你的數(shù)
據(jù)庫(kù)。
phpMyAdmin支持多語(yǔ)言。如果要改成中文版本,則修改config.inc.php3中的require("english.inc.php3");為require("chinese_gb.inc.php3")。這樣界面就是中文的了。好棒噢!
保存config.inc.php3。
安裝注意
請(qǐng)確認(rèn)保護(hù)了phpMyAdmin目錄。缺省是沒有任何保護(hù)的!它不應(yīng)該被隨便一個(gè)人特別是搜索引擎讀到。
盡管我在每一頁(yè)中都加了一個(gè)"nofollow"指令,也可能有的搜索引擎不考慮仍然繼續(xù)訪問頁(yè)面的鏈接。
想象一下AltaVista訪問了一個(gè)名叫"Drop Dtabase"的鏈接會(huì)怎么樣吧。你可以
在http://www.apacheweek.com/features/userauth對(duì)Apache的認(rèn)證方法有一個(gè)全面了解。另一個(gè)教程
在http://deepthought.texsci.edu/protected_dirs.html
PHP3應(yīng)該被配置為magic_quotes=on。
配置
所有可配置數(shù)據(jù)都放在config.inc.php3中。
$cfgServers 數(shù)組
從1.4.2版本開始,phpMyAdmin支持對(duì)多個(gè)MySQL-server的管理。所以,增加了$cfgServers數(shù)組來存放
不同服務(wù)器的登錄信息。$cfgServers[1]['host']包含了第一個(gè)服務(wù)器的主機(jī)名,$cfgServers[2]['host']
為第二個(gè)服務(wù)器的主機(jī)等,等等。如果你只有一個(gè)服務(wù)器要管理,可以簡(jiǎn)單地不去理會(huì)其它$cfgServers入
口的主機(jī)名。
$cfgServers[n]['port'] 字符串
第n個(gè)MySQL服務(wù)器的端口號(hào)。缺省值為3300(保留空值)。
$cfgServers[n]['host'] 字符串
第n個(gè)MySQL服務(wù)器的主機(jī)名。例如,localhost。
$cfgServers[n]['adv_auth'] 布爾值
對(duì)這個(gè)服務(wù)器應(yīng)該使用基本或是高級(jí)認(rèn)證方式?;菊J(rèn)證方式($adv_auth = false)是普通的老的作法:
用戶名和口令被存在config.inc.php3中。高級(jí)認(rèn)證方式($adv_auth = true)從1.3.0版開始引入,允許你通
過HTTP-Auth來作為合法的MySQL的用戶進(jìn)行登錄。在config.inc中你只需要提供一個(gè)標(biāo)準(zhǔn)用戶,他能夠連接
到MySQL上并且可以讀出mysql庫(kù)的user/db表(看$cfgServers[n]['stduser'])。
推薦使用高級(jí)方式管理的場(chǎng)合:
當(dāng)phpMyAdmin運(yùn)行在多用戶環(huán)境下,人們擁有shell處理權(quán)限時(shí),你不想知道MySQL的用戶名/口令。
當(dāng)你想讓用戶存取他們自已的數(shù)據(jù)庫(kù),并且不想他們干擾其他人。
高級(jí)認(rèn)證方式是安全的,因?yàn)闃?biāo)準(zhǔn)用戶只需要對(duì)mysql庫(kù)的只讀權(quán)限。MySQL口令不能被容易的破解,所
以對(duì)于一個(gè)普通用戶沒有機(jī)會(huì)看到其它用戶的明文口令。
$cfgServers[n]['user'] 字符串
$cfgServers[n]['password'] 字符串
當(dāng)使用基本認(rèn)證方式時(shí),phpMyAdmin將使用用戶名/口令對(duì)同這個(gè)MySQL服務(wù)器連接。當(dāng)使用高級(jí)認(rèn)證方
式時(shí)則不需要。
$cfgServers[n]['stduser'] 字符串
$cfgServers[n]['stdpass'] 字符串
當(dāng)使用高級(jí)認(rèn)證方式時(shí),用戶名/口令對(duì)被用于校驗(yàn)真正的用戶名/口令對(duì)。這個(gè)用戶必須能夠連接MySQL,
而且可以讀取mysql庫(kù)的user表。當(dāng)使用基本認(rèn)證方式時(shí)則不需要。
$cfgServers[n]['only_db'] 字符串
如果設(shè)置了一個(gè)數(shù)據(jù)庫(kù)名,只有這個(gè)數(shù)據(jù)庫(kù)將顯示給用戶。
$cfgServers[n]['verbose'] 字符串
只有在多服務(wù)器入口時(shí)使用phpMyAdmin才有用。如果設(shè)置了,這個(gè)字符串將被顯示出來,用來代替在主頁(yè)面中的下接菜單中的主機(jī)名。例如,如果你想在系統(tǒng)只顯示某些數(shù)據(jù)庫(kù),這個(gè)可能就有用了。
$cfgManualBase 字符串
如果設(shè)為一個(gè)URL(它指向MySQL文檔),就會(huì)創(chuàng)建相應(yīng)的幫助鏈接。
$cfgPersistentConnections 布爾值
是否使用持續(xù)連接(mysql_connect或mysql_pconnect)。
$cfgConfirm 布爾值
當(dāng)你將要丟失數(shù)據(jù)時(shí)是否應(yīng)該顯示一個(gè)警告信息("你真的確定要...")。
$cfgMaxRows 整數(shù)
當(dāng)瀏覽一個(gè)結(jié)果集時(shí)顯示的記錄數(shù)。如果結(jié)果集包含了更多的數(shù)據(jù),將顯示前頁(yè)/后頁(yè)的鏈接。
$cfgMaxInputsize 整數(shù)
當(dāng)向一個(gè)表增加一條新的記錄時(shí),編輯字段的大小。
$cfgBorder 整數(shù)
表格邊界的大小。
$cfgThBgcolor 字符串 [HTML 顏色]
用在表頭的顏色。
$cfgBgcolorOne 字符串 [HTML 顏色]
表格行第一行的顏色。
$cfgBgcolorTwo 字符串 [HTML 顏色]
表格行第二行的顏色。
$cfgOrder 字符串 ["DESC"|"ASC"]
定義了當(dāng)你點(diǎn)擊字段名時(shí),字段是以升序("ASC")顯示還是以降序("DESC")顯示。
$cfgShowBlob 布爾值
定義了當(dāng)瀏覽一個(gè)表的內(nèi)容時(shí),是否顯示BLOB字段。
$cfgShowSQL 布爾值
定義了是否顯示phpMyAdmin所生成的sql查詢語(yǔ)句。
$cfgColumnTypes 數(shù)組
MySQL列的所有可能的類型。大多數(shù)情況下你不需要編輯它。
$cfgFunctions 數(shù)組
MySQL支持函數(shù)的列表。大多數(shù)情況下你不需要編輯它。
$cfgAttributeTypes 數(shù)組
字段可能的屬性。大多數(shù)情況下你不需要編輯它。
FAQ - 常見問題
我不能向表中插入新記錄 -- MySQL返回一個(gè)SQL錯(cuò)誤。
仔細(xì)檢查SQL錯(cuò)誤。我發(fā)現(xiàn)很多的程序員使用了錯(cuò)誤的字段類型。普通的錯(cuò)誤包括:
使用VARCHAR沒有指定大小
使用TEXT或BLOB指定了大小
另外,查看一下MySQL手冊(cè)中的語(yǔ)法章節(jié)以確認(rèn)你的語(yǔ)法是正確的。
phpMyAdmin不能連接MySQL。出了什么錯(cuò)?
或者是PHP安裝的問題或者是你的用戶名/口令錯(cuò)了。試著編一個(gè)小的用了mysql_connect的腳本,看一
下是否它能工作。如果不能,那就可能是還沒有在PHP中將MySQL的編譯進(jìn)去。
我不能編輯表的內(nèi)容,盡管README中說這是phpMyAdmin的一個(gè)特色。
phpMyAdmin只允許編輯擁有主鍵或唯一鍵值的表的內(nèi)容。
當(dāng)使用高級(jí)認(rèn)證管理時(shí),phpMyAdmin總是給出"處理禁止(Access denied)"。
發(fā)生可能有幾種原因:
$stduser/$stdpassword不正確。試著關(guān)掉$adv_auth,然后使用這個(gè)用戶名及口令來連接MySQL。
在登錄對(duì)話框中指定的用戶名/口令是錯(cuò)的。試著用上面同樣的方法看一下是否可以工作。
你已經(jīng)給phpMyAdmin安裝目錄建立了安全機(jī)制,例如,.htaccess文件。這個(gè)可能干擾phpMyAdmin的認(rèn)
證管理,那么把它刪除。
我想對(duì)phpMyAdmin的開發(fā)提供幫助。我應(yīng)該如何進(jìn)行?
下面的方法對(duì)于新的開發(fā)者來說是首選的:
取出在匿名CVS上的當(dāng)前的CVS:
cvs -d :pserver:anon@www.htmlwizard.net:/usr/local/cvsroot login
[Password: phpMyAdmin]
cvs -d :pserver:anon@www.htmlwizard.net:/usr/local/cvsroot checkout phpMyAdmin
[這樣將創(chuàng)建一個(gè)名為phpMyAdmin的新的子目錄]
加入你的東西
將修改的文件發(fā)給我(tar格式或gzip格式) 對(duì)CVS樹的寫權(quán)限只授權(quán)給有經(jīng)驗(yàn)的已經(jīng)對(duì)phpMyAdmin作出
了貢獻(xiàn)的開發(fā)者。
另外看一下DEVELOPERS文件。
有什么好的方法可以讓phpMyAdmin更安全對(duì)付惡意的攻擊?
這要看你的系統(tǒng)了。如果你正在運(yùn)行一個(gè)無法被其它人使用的服務(wù)器,使用web服務(wù)器的目錄保護(hù)綁定
就已經(jīng)足夠了(例如,對(duì)于Apache你可以使用.htaccess文件)。如果其它的人可以通過telnet存取你的服務(wù)
器,將MySQL口令以明文形式保存在你的config.inc.php3 文件中就不是一個(gè)好方法了。在這種情況下你應(yīng)
該使用phpMyAdmin的高級(jí)認(rèn)證方式功能。
如何才能向我的表中插入一個(gè)null值呢?
輸入"null"(沒有引號(hào))作為字段的的值。這個(gè)對(duì)于時(shí)間戳或自動(dòng)增加字段特別有用。
我是一個(gè)ISP供應(yīng)商。我可以安裝一個(gè)主控的phpMyAdmin拷貝嗎?或需要為每一個(gè)客戶都安裝一個(gè)?
從2.0.3版本開始,你可以安裝一個(gè)主控的phpMyAdmin拷貝為你的所有的用戶。這個(gè)特性的開發(fā)是由
NetCologne GmbH倡議的。這樣就要求合理地設(shè)置MySQL用戶,并且設(shè)置phpMyAdmin的高級(jí)認(rèn)證方式。當(dāng)認(rèn)證
一個(gè)用戶時(shí),phpMyAdmin執(zhí)行這些步驟:
從mysql.user表中選出所有用戶名/口令與申請(qǐng)用戶相匹配的記錄。如果沒有記錄被返回,認(rèn)證失敗。
否則,phpMyAdmin繼續(xù)第2步。
如果用戶的global Select_Priv是"N"(也就是用戶不允許存取所有的數(shù)據(jù)庫(kù)),phpMyAdmin搜索mysql.db
表,查找對(duì)于這個(gè)用戶的Select_Priv="Y"的記錄。如果沒有記錄被找到,認(rèn)證失敗。否則,phpMyAdmin
顯示所有允許用戶查看的數(shù)據(jù)庫(kù)。
如果用戶的global Select_Priv是"Y",系統(tǒng)中所有的數(shù)據(jù)庫(kù)都顯示出來。
這就意味著你需要向mysql庫(kù)中如下增加用戶:
INSERT INTO user (Host, User, Password, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv, File_priv, Grant_priv, References_priv, Index_priv, Alter_priv) VALUES ('localhost', 'foo', PASSWORD('bar'), 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N')
INSERT INTO db (Host, Db, User, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv, Grant_priv, References_priv, Index_priv, Alter_priv) VALUES ('localhost', 'foo_db', 'foo', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', '', '', '', '')
那樣,對(duì)于用戶foo,只有"foo_db"庫(kù)將被顯示出來。
phpMyAdmin主頁(yè):http://www.htmlwizard.net/phpMyAdmin/