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