- PR -

PHP+MySQL+IISの組合せでMySQL連携がうまく動作していない

1
投稿者投稿内容
platini
大ベテラン
会議室デビュー日: 2002/12/03
投稿数: 193
投稿日時: 2007-02-19 23:27
まずインストールした環境、バージョンを記述します。
IIS(5.0 WindowsXP)
PHP 4.4.5 ( Windows版)
MySQL 4.1.22(Windows版)

なお、PHPは今日始めて触っています。

【最終目標】
XOOPSをインストールしたい。

【行き詰っていること】
XOOPSのインストール画面でデータベースに接続できませんと出る。
このため、XOOPS以前にとりあえずPHPとMySQLの連携がうまく行っているのか
検証してみた。最終的にはXOOPSのインストールが目標だが、
恐らくその手前でつまづいているらしい。


【できていること】
1)MySQLはコマンドプロンプトベースでは、思うとおり反応してくれている
MySQLに対して、コマンドプロンプトから
>mysql -u root -ppassword xoopsarchive
と打ってログインはできているし、
ユーザーも作成できている。

2)phpも以下のようなテストコードを作成して、動作することを確認した。
 すなわち、IISに対してのPHPのISAPIフィルタリングもうまく行っている。
コード:
<?php phpinfo(); ?>



3)ところが、以下のデータベース接続サンプルテストを実行すると、
なんで?というエラーが出る。
エラーの具体的な内容は下記の通り。
この中で、ODBC'@'localhost
なんてユーザーはどこにも指定はしていないのに、なぜこんな勝手なものが出るのかわからない。
確かにこんなユーザーは存在しないので、これで接続しようとしているなら
エラーが発生することは理解できるが、ソースにもどこにもそんな
ユーザーがいない。
どこかのiniなどに記述されているのでは?と思ったが、見つかりませんでした。
お知恵を拝借願います。

Warning: mysql_connect() [function.mysql-connect]: Client does not support authentication protocol requested by server; consider upgrading MySQL client in c:\inetpub\wwwroot\phptestfile.php on line 17

Warning: mysql_select_db() [function.mysql-select-db]: Access denied for user 'ODBC'@'localhost' (using password: NO) in c:\inetpub\wwwroot\phptestfile.php on line 18

Warning: mysql_select_db() [function.mysql-select-db]: A link to the server could not be established in c:\inetpub\wwwroot\phptestfile.php on line 18

Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in c:\inetpub\wwwroot\phptestfile.php on line 26

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\inetpub\wwwroot\phptestfile.php on line 28

Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in c:\inetpub\wwwroot\phptestfile.php on line 33

Warning: mysql_close(): supplied argument is not a valid MySQL-Link resource in c:\inetpub\wwwroot\phptestfile.php on line 34

上記のようなエラー。phpファイルは以下の通り。

コード:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>PHP MySQL TEST</title>
<meta http-equiv="content-type" content="text/html; charset=shift_jis">
</head>
<body>

<h2>DB接続テスト(PHP MySQL版)</h2>

<?php
	$hostname = "localhost";
	$username = "myuser";
	$password = "mypassword";
	$dbname = "xoopsarchive";

	$connect = mysql_connect($hostname, $username, $password);
	mysql_select_db($dbname);

	$sql = "insert into mytestable values('4いいい')";
	$sqlq = mysql_query($sql, $connect);

	$sql = "select * from mytestable";
	$sqlq = mysql_query($sql, $connect);
    
	while($row = mysql_fetch_array($sqlq)){
		echo $row["id"] . " / ";
		echo $row["name"] . "<br>";
	}
	
	mysql_free_result($sqlq);
	mysql_close($connect);
?>

</body>
</html>





shimix
ぬし
会議室デビュー日: 2004/08/05
投稿数: 512
お住まい・勤務地: 大分市
投稿日時: 2007-02-20 02:41
引用:

platiniさんの書き込み (2007-02-19 23:27) より:
この中で、ODBC'@'localhost
なんてユーザーはどこにも指定はしていないのに、なぜこんな勝手なものが出るのかわからない。

Warning: mysql_connect() [function.mysql-connect]: Client does not support authentication protocol requested by server; consider upgrading MySQL client in c:\inetpub\wwwroot\phptestfile.php on line 17

Warning: mysql_select_db() [function.mysql-select-db]: Access denied for user 'ODBC'@'localhost' (using password: NO) in c:inetpub\wwwroot\phptestfile.php on line 18


ODBC'@'localhostは、ユーザ・パスワード指定なしで接続しようとしたケース(anonymousの接続不許可時)ではなかったかと思います。このエラーの発生元はmysql_select_db()ですから前の行のmysql_connect()のエラーが解決されれば問題ないかと。

で、mysql_connect()は「Client does not support authentication protocol requested by server」ですから、このあたり↓ですかねぇ。

http://dev.mysql.com/doc/refman/4.1/ja/old-client.html

phpinfoでmysqlのClient API versionはどうなっていますか?多分4.1未満のハズですから、「--old-passwords を指定して mysqld を開始する」あたりを試せばどうでしょうか?

[ メッセージ編集済み 編集者: shimix 編集日時 2007-02-20 02:45 ]
platini
大ベテラン
会議室デビュー日: 2002/12/03
投稿数: 193
投稿日時: 2007-02-20 23:29
引用:

ODBC'@'localhostは、ユーザ・パスワード指定なしで接続しようとしたケース(anonymousの接続不許可時)ではなかったかと思います。このエラーの発生元はmysql_select_db()ですから前の行のmysql_connect()のエラーが解決されれば問題ないかと。


確かに、インストール時にanonymousログオン不許可でインストールしました。
まだ、試せていませんが、どうせクリーンインストールしても問題ないので
anonymousログオンとか、あるいは教えていただいたリンクの

--old-passwords

問題だとかを試して再挑戦してみます。

教えていただいたリンクや old-passwordsを手がかりに
多分きちんと手順を踏めば解決できそうな情報が
盛り込まれているページにまでたどり着くことができました。

実際解決できるかは不明ですし、直感以上の何モノでも
ありませんが、自分がold-passwords絡みで
引っかかっていることは間違いなさそうな気がします。

貴重なアドバイスありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)