質問: phpからmysqlに接続できない 自宅サーバー(php4.3.9+mysql4.1+windows2000)で構築を試みています。 phpからmysqlに接続するのに次のようなソースを試してみました。 次のようなエラーが返りました。 warning: mysql_connect(): client does not support authentication protocol requested by server; consider upgrading mysql client in c:\create.php on line warning: mysql_select_db(): supplied argument is not a valid mysql-link resource in c:\create.php on line このエラーについていろいろ調べたのですが、mysql4.1以降からパスワードのハッシュが変更になっており、phpからアクセスできないという記事を見つけました。 解決方法としてmysql起動時に「--old-passwords」オプションをつければよい、という記事だったのですが、 質問1:このエラーは果たしてパスワードの問題なのでしょうか。他に考えられる原因はないでしょうか。 質問2:windowsの場合、mysqlはサービスとして起動しているのでオプションをどのようにつければいいのかわかりません。 質問3:phpのバージョンが上がるにつれ、この問題は解決するのかもしれませんが、現段階でphp側で解決する手段はないのでしょうか。 ちなみにコマンドラインから c:\>c:\mysql\bin\mysqlshow access denied for 'odbc'@'localhost'(using password:no) となります。 コマンドラインからはログインでき、テーブルなどの作成は済んでいます。 よろしくお願いします。
回答: mysql 4.1で「ユーザ認証」の「認証方式」が変更されました。従って、mysql 4.0/3.2xクライアントからmysql 4.1/5.0サーバへの接続ができなくなりました。 回避策として調べたとおり「--old-passwords」オプションをつけてmysqldを起動することになります。 >質問1:~ 間違いなく「ユーザ認証」の「認証方式」が異なっていることに起因する問題です。 >質問2:~ %systemroot%\my.cnfファイルに起動オプションを指定可能です。(下記参照) >質問3:~ libmysql.dllとphpの問題ですね。アプリケーション側(php側)での対応も必要になります。 運が良ければ、mysql-4.1-win32に付属のlibmysql.dllと差し替えてみるだけで動くと思います。