"Www.ncu.edu.tw 之PHP4版本的 mysql client 3.23.58 無法支援 MySQL 4.1 以上版本資料庫連接?" 修訂間的差異
(未顯示同一使用者於中間所作的 7 次修訂) | |||
行 5: | 行 5: | ||
* 原因:因為 MySQL 4.1 以上版本為了提高安全性,使用了新的密碼驗證機制。如此,MySQL 的 Client Library 需要 4.0 版本以上。但目前在 Client 端所使用的 PHP 版本若為 5.0 以下(如 4.3.9),其內建的 MySQL Library 大都為 3.23,並不支援新版的密碼驗證機制。 | * 原因:因為 MySQL 4.1 以上版本為了提高安全性,使用了新的密碼驗證機制。如此,MySQL 的 Client Library 需要 4.0 版本以上。但目前在 Client 端所使用的 PHP 版本若為 5.0 以下(如 4.3.9),其內建的 MySQL Library 大都為 3.23,並不支援新版的密碼驗證機制。 | ||
− | * | + | * 解決方案(以下擇其一): |
:#將 PHP 升級為 5.0版以上 | :#將 PHP 升級為 5.0版以上 | ||
行 16: | 行 16: | ||
:::因為短期間無法馬上更新www.ncu.edu.tw的PHP版本至PHP5,會影響在原PHP4開發的網頁無法正常顯示,暫時解決如下: | :::因為短期間無法馬上更新www.ncu.edu.tw的PHP版本至PHP5,會影響在原PHP4開發的網頁無法正常顯示,暫時解決如下: | ||
:::電算中心另有一部 web.cc.ncu.edu.tw是去年才安裝,主要用來提供學生網頁空間, | :::電算中心另有一部 web.cc.ncu.edu.tw是去年才安裝,主要用來提供學生網頁空間, | ||
− | :::這部機器安裝PHP5版本,透過這個版本的 mysql client | + | :::這部機器安裝PHP5版本,透過這個版本的 mysql client ,應該可以連結MySQL 4.1 以上版本資料庫, |
:::再透過網頁轉址的設定,使用者對外公告的 http://www.ncu.edu.tw/~xxxxx / 網址仍可以沿用。 | :::再透過網頁轉址的設定,使用者對外公告的 http://www.ncu.edu.tw/~xxxxx / 網址仍可以沿用。 | ||
+ | :::這個短期解決方案須配合修改兩個檔案,加入我們測試過的程式碼如下: | ||
− | + | :::一、修改 index.php ,於程式開頭,加入以下轉址程式碼: | |
− | |||
− | |||
:::<nowiki><?php</nowiki> | :::<nowiki><?php</nowiki> | ||
$webhost = "web.cc.ncu.edu.tw"; | $webhost = "web.cc.ncu.edu.tw"; | ||
行 30: | 行 29: | ||
:::<nowiki>?></nowiki> | :::<nowiki>?></nowiki> | ||
---- | ---- | ||
− | + | ||
− | + | :::二、修改連接mysql server 的程式(例:connectDB.php),於程式開頭,加入以下 load mysql module 程式碼: | |
:::<nowiki><?php</nowiki> | :::<nowiki><?php</nowiki> | ||
if (! function_exists ('mysql_query')) { | if (! function_exists ('mysql_query')) { | ||
行 40: | 行 39: | ||
} | } | ||
:::<nowiki>?></nowiki> | :::<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; } }
- ?>