[
![]() [文章作者:張宴 本文版本:v1.0 最后修改:2007.04.06 轉(zhuǎn)載請注明出處:http://blog.]
需求背景: phpMyAdmin是一款不錯的MySQL在線管理工具,但phpMyAdmin的cookie登錄方式只能輸入MySQL數(shù)據(jù)庫的用戶名和密碼,而想更改MySQL服務(wù)器地址和端口則須修改其配置文件config.default.php。當(dāng)擁有多臺數(shù)據(jù)庫服務(wù)器,每臺服務(wù)器又在不同端口啟動了多個MySQL服務(wù),每次都修改配置文件就顯得很麻煩,因此需要能夠在登錄界面直接輸入MySQL服務(wù)器地址和端口的功能。 功能要求: 假設(shè)phpMyAdmin的訪問網(wǎng)址為http://192.168.1.25/phpmyadmin/,能夠通過輸入MySQL服務(wù)器地址、端口、用戶名、密碼登錄遠(yuǎn)程MySQL服務(wù)器,對遠(yuǎn)程數(shù)據(jù)庫進(jìn)行管理。 修改后的phpMyAdmin登錄入口截圖: ![]() 實現(xiàn)步驟: 1、打開“路徑/phpmyadmin/libraries/config.default.php”,查找相關(guān)項并修改為以下內(nèi)容: $cfg[‘PmaAbsoluteUri‘] = ‘http://192.168.1.25/phpmyadmin/‘; $cfg[‘Servers‘][$i][‘host‘] = $_COOKIE["mysqlhost"]; $cfg[‘Servers‘][$i][‘port‘] = $_COOKIE["mysqlport"]; $cfg[‘Servers‘][$i][‘a(chǎn)uth_type‘] = ‘cookie‘; 2、打開“路徑/phpmyadmin/index.php”,在文件最開頭增加以下PHP代碼: <?php if($_POST["mysqlhost"]<>"" and $_POST["mysqlport"]<>"") { setcookie("mysqlhost"); setcookie("mysqlport"); setcookie("mysqlhost",$_POST["mysqlhost"],0,"/"); setcookie("mysqlport",$_POST["mysqlport"],0,"/"); } ?> 3、打開“路徑/phpmyadmin/libraries/auth/cookie.auth.lib.php”,查找“<!-- Login form -->”這行,在該行下方的第10行后(即“<?php } ?>”這行后)增加以下HTML代碼: <div class="item"> <label for="input_username">服務(wù)器地址:</label> <input type="text" name="mysqlhost" id="mysqlhost" value="<?=$_COOKIE["mysqlhost"];?>" size="24" class="textfield" /> </div> <div class="item"> <label for="input_username">MySQL端口:</label> <input type="text" name="mysqlport" id="mysqlport" value="<?=$_COOKIE["mysqlport"];?>" size="24" class="textfield" /> </div> 圖示: ![]() 4、創(chuàng)建一個可以從任何IP地址遠(yuǎn)程連接的MySQL賬號sina MySQL默認(rèn)的賬號為root,密碼為空,只允許localhost登錄,因此需要創(chuàng)建一個可以從任何IP地址遠(yuǎn)程連接的MySQL賬號,本例中創(chuàng)建的賬號為sina,密碼為zhangyan。使用該賬號從phpMyAdmin登錄后,別忘了在“權(quán)限”欄中修改密碼。 (1)、Linux下的MySQL命令行客戶端添加賬號示例: A.登錄使用默認(rèn)3306端口的MySQL 引用
/usr/local/mysql/bin/mysql -u root -p
B.通過TCP連接管理不同端口的多個MySQL(注意:MySQL4.1以上版本才有此項功能) 引用
/usr/local/mysql/bin/mysql -u root -p --protocol=tcp --host=localhost --port=3307
C.通過socket套接字管理不同端口的多個MySQL 引用
/usr/local/mysql/bin/mysql -u root -p --socket=/tmp/mysql3307.sock
Enter password: (輸入密碼,如果密碼為空,直接回車) mysql> (在這兒輸入以下的語句) 引用
GRANT ALL PRIVILEGES ON *.* TO ‘sina‘@‘%‘ IDENTIFIED BY ‘zhangyan‘;
如果提示信息為Query OK, 0 rows affected (0.01 sec),表示執(zhí)行成功。 (2)、Windows下的MySQL命令行客戶端添加賬號示例: A.管理使用默認(rèn)3306端口的MySQL 引用
d:\apmserv\mysql\bin\mysql.exe -u root -p
B.管理不同端口的多個MySQL 引用
d:\apmserv\mysql\bin\mysql.exe -u root -p --port=3307
Enter password: (輸入密碼,如果密碼為空,直接回車) mysql> (在這兒輸入以下的語句) 引用
GRANT ALL PRIVILEGES ON *.* TO sina@"%";
如果提示信息為Query OK, 0 rows affected (0.01 sec),表示執(zhí)行成功。 |
|
192.168.0.1安裝phpmyadmin
用它來管理192.168.0.10、192.168.0.11,兩天機(jī)器的mysql數(shù)據(jù)庫。
我按照你的配置來配,每次登陸不管服務(wù)器地址和端口輸入什么,都只能登陸本機(jī)mysql(192.168.0.1也有mysql)
注明:10,11的mysql在192.168.0.1上可以用myslq -uroot -p××× 方式登陸(遠(yuǎn)程登陸已經(jīng)授權(quán))
出現(xiàn)只能登錄本機(jī)的情況可能是你的phpmyadmin配置文件中的MySQL地址還是默認(rèn)的localhost,你可以打開“路徑/phpmyadmin/libraries/config.default.php”,查找“localhost”,如果找到,替換為$_COOKIE["mysqlhost"];
(可參見步驟1)