質問: PHPからMySQLを使いたくて下記の環境を構築しました。 それぞれは正常に動作していますが、phpとmysqlの連携ができません。 PHP Version 4.3.10 MySQL Version 4.1.15 Apache 2.0.52 WindowsXP Home Edition ホスト名 localhost ユーザー名 root パスワード adminで firsttestというDBにテーブルを作成しました(DOSプロンプトから)。 そして次のコードを記述して実行すると下記のエラーが表示させます。 $conn=mysql_connect("localhost","root","admin"); // 5行目 mysql_select_db("firsttest",$conn); // 6行目 $res=mysql_query("show tables",$conn); // 7行目 --------- エラー画面----------- Warning: mysql_connect(): Client does not support authentication protocol requested by server; consider upgrading MySQL client in C:\Program Files\Apache Group\Apache2\htdocs\sweetsystem\dbtest.php on line 5 Warning: mysql_select_db(): supplied argument is not a valid MySQL-Link resource in C:\Program Files\Apache Group\Apache2\htdocs\sweetsystem\dbtest.php on line 6 Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in C:\Program Files\Apache Group\Apache2\htdocs\sweetsystem\dbtest.php on line 7 ------------------------------ MySQLを利用しないPHPプログラムは正常に動作しています。 またMySQLもDOSプロンプトからはテーブル等正常に作成できます。 初心者で先に進めずとても困っています。 解決策がありましたら教えてください。 宜しくお願いします。
回答: MySQL4.1からパスワードの管理方式が変わりました。 infotownさんがインストールしたPHP 4.3.10に含まれるモジュールでは この新しいパスワード方式には対応できない為エラーになっているようです。 PHPを新しい4.4.1(もしくは4.3.11)に置き換えるか、モジュールだけ最新の物にリコンパイルするか... おすすめできませんがSQLを実行し旧暗号化方式に対応させることもできます。 おすすめできませんが起動オプション --old-passwords をつけて起動するか my.cnfファイルの[mysqld]ファンクションにold-passwordsを記述することで この問題を回避できます。 ちなみに4.3.10には深刻な脆弱性がありますのでバージョンアップをおすすめします。