こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

PHPからmySQLに接続できない

自宅サーバー(PHP4.3.9+mySQL4.1+Windows2000)で構築を試みています。
PHPからmySQLに接続するのに次のようなソースを試してみました。
<?php
$mysql=mysql_connect("localhost","user","password");
if(mysql_select_db("dbname", $mysql)){
print "OK";
}else{
print "NG";
}
?>
次のようなエラーが返りました。
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)
となります。
コマンドラインからはログインでき、テーブルなどの作成は済んでいます。
よろしくお願いします。

投稿日時 - 2004-12-10 16:12:02

QNo.1121173

困ってます

質問者が選んだベストアンサー

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と差し替えてみるだけで動くと思います。

参考URL:http://www.mysql.gr.jp/frame/modules/xoopsfaq/index.php?cat_id=2

投稿日時 - 2004-12-10 17:44:40

お礼

ズバリのご回答ありがとうございました。
今日一日悩みぬいたので、非常に助かりました。
どうもありがとうございました。

投稿日時 - 2004-12-10 22:14:15

このQ&Aは役に立ちましたか?

14人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問