"Www.ncu.edu.tw 之PHP4版本的 mysql client 3.23.58 無法支援 MySQL 4.1 以上版本資料庫連接?" 修訂間的差異
(未顯示同一使用者於中間所作的 16 次修訂) | |||
行 10: | 行 10: | ||
:#切換 PHP 4 的 MySQL extension 為 MySqlLi | :#切換 PHP 4 的 MySQL extension 為 MySqlLi | ||
:#在 MySQL console 下,更新密碼形式改為 OLD_PASSWORD() (設回原來舊版的密碼驗證機制): | :#在 MySQL console 下,更新密碼形式改為 OLD_PASSWORD() (設回原來舊版的密碼驗證機制): | ||
− | ::mysql> UPDATE mysql.user SET Password = OLD_PASSWORD('newpwd')<br> | + | :::mysql> UPDATE mysql.user SET Password = OLD_PASSWORD('newpwd') WHERE Host = 'some_host' AND User = 'some_user';<br> |
− | ::<nowiki> | + | :::mysql> FLUSH PRIVILEGES;<br> |
− | ::mysql> | + | |
+ | * 短期解決方案:(2008/05/23) | ||
+ | :::因為短期間無法馬上更新www.ncu.edu.tw的PHP版本至PHP5,會影響在原PHP4開發的網頁無法正常顯示,暫時解決如下: | ||
+ | :::電算中心另有一部 web.cc.ncu.edu.tw是去年才安裝,主要用來提供學生網頁空間, | ||
+ | :::這部機器安裝PHP5版本,透過這個版本的 mysql client ,應該可以連結MySQL 4.1 以上版本資料庫, | ||
+ | :::再透過網頁轉址的設定,使用者對外公告的 http://www.ncu.edu.tw/~xxxxx / 網址仍可以沿用。 | ||
+ | :::這個短期解決方案須配合修改兩個檔案,加入我們測試過的程式碼如下: | ||
+ | |||
+ | :::一、修改 index.php ,於程式開頭,加入以下轉址程式碼: | ||
+ | :::<nowiki><?php</nowiki> | ||
+ | $webhost = "web.cc.ncu.edu.tw"; | ||
+ | if ($_SERVER["SERVER_NAME"] != $webhost) { | ||
+ | $url = 'http://' . $webhost . $_SERVER["PHP_SELF"]; | ||
+ | header ("Location: $url"); | ||
+ | } | ||
+ | :::<nowiki>?></nowiki> | ||
+ | ---- | ||
+ | |||
+ | :::二、修改連接mysql server 的程式(例:connectDB.php),於程式開頭,加入以下 load mysql module 程式碼: | ||
+ | :::<nowiki><?php</nowiki> | ||
+ | if (! function_exists ('mysql_query')) { | ||
+ | if (! @dl('mysql.so')) { | ||
+ | echo "Could not load mysql extension"; | ||
+ | exit; | ||
+ | } | ||
+ | } | ||
+ | :::<nowiki>?></nowiki> | ||
+ | ---- | ||
+ | 參考網址:http://www.kenming.idv.tw/index.php?title=a_cs_eu_a_mysql_4_1_7_and_php_4_3_x_a_se&more=1&c=1&tb=1&pb=1 |
於 2008年6月4日 (三) 03:25 的最新修訂
- 問題描述:以www.ncu.edu.tw 之PHP4版本的 mysql client 3.23.58 無法連線 MySQL 4.1 以上版本資料庫
- 錯誤訊息: Client does not support authentication protocol requested by server; consider upgrading MySQL client
- 原因:因為 MySQL 4.1 以上版本為了提高安全性,使用了新的密碼驗證機制。如此,MySQL 的 Client Library 需要 4.0 版本以上。但目前在 Client 端所使用的 PHP 版本若為 5.0 以下(如 4.3.9),其內建的 MySQL Library 大都為 3.23,並不支援新版的密碼驗證機制。
- 解決方案(以下擇其一):
- 將 PHP 升級為 5.0版以上
- 切換 PHP 4 的 MySQL extension 為 MySqlLi
- 在 MySQL console 下,更新密碼形式改為 OLD_PASSWORD() (設回原來舊版的密碼驗證機制):
- mysql> UPDATE mysql.user SET Password = OLD_PASSWORD('newpwd') WHERE Host = 'some_host' AND User = 'some_user';
- mysql> FLUSH PRIVILEGES;
- mysql> UPDATE mysql.user SET Password = OLD_PASSWORD('newpwd') WHERE Host = 'some_host' AND User = 'some_user';
- 短期解決方案:(2008/05/23)
- 因為短期間無法馬上更新www.ncu.edu.tw的PHP版本至PHP5,會影響在原PHP4開發的網頁無法正常顯示,暫時解決如下:
- 電算中心另有一部 web.cc.ncu.edu.tw是去年才安裝,主要用來提供學生網頁空間,
- 這部機器安裝PHP5版本,透過這個版本的 mysql client ,應該可以連結MySQL 4.1 以上版本資料庫,
- 再透過網頁轉址的設定,使用者對外公告的 http://www.ncu.edu.tw/~xxxxx / 網址仍可以沿用。
- 這個短期解決方案須配合修改兩個檔案,加入我們測試過的程式碼如下:
- 一、修改 index.php ,於程式開頭,加入以下轉址程式碼:
- <?php
$webhost = "web.cc.ncu.edu.tw"; if ($_SERVER["SERVER_NAME"] != $webhost) { $url = 'http://' . $webhost . $_SERVER["PHP_SELF"]; header ("Location: $url"); }
- ?>
- 二、修改連接mysql server 的程式(例:connectDB.php),於程式開頭,加入以下 load mysql module 程式碼:
- <?php
if (! function_exists ('mysql_query')) { if (! @dl('mysql.so')) { echo "Could not load mysql extension"; exit; } }
- ?>