• 締切済み

xampp(php,apache,mysql)で勉強しています。

xampp(php,apache,mysql)で勉強しています。 データーベースにつなぐときに、コマンドプロンプトやphpmyadminから接続すると つなぐことができるのですが、phpのソースからmysqlに接続しようとすると、 Access denied for user 'ODBC'@'localhost' とのエラーがでます。 grantコマンドを使って権限の設定はしています。どうすればエラーが出なくなる でしょうか?

みんなの回答

  • moousi
  • ベストアンサー率70% (21/30)
回答No.6

まだ、接続できない状態でしょうか? >なぜ教えて頂いたような形になれば、パスワード間違いと判断できるようになるのですか? と言ったつもりはありません。 usersの情報を確認することで、 ・バージョンが4.1未満でないこと ・hostとuserが一致していること が確認できます。 私の経験だとうまくいかなかった場合、それらを確認・対処したことですべて問題解決しました。 よって、あなたの状況と違うようなので、これ以上アドバイスできることは私にはないということです。 やはり、接続などの環境まわりの質問に答えるのは難しいですね・・・

590228
質問者

補足

もっと努力し、なんとか上手くできるようにします。 ありがとうございます。

  • 39jin
  • ベストアンサー率34% (125/359)
回答No.5

全く自信はありませんが この回答への補足でソース展開をしていますが このソースはコピーペですか、書き込みですか ソースでは、 <?php $host="localhost" $user="root" $pass="****" として、 mysql_connect($host,$user,$pass); ~中略~ ?> としています。 【;】が抜けていますが $host="localhost"; $user="root"; $pass="****";

590228
質問者

補足

ソースは実際に書きました。 あと、実際のソースには;は書いてあります。すいません。

  • moousi
  • ベストアンサー率70% (21/30)
回答No.4

コマンドプロンプトにて、rootでログイン。 以下コマンドを発行するとどうなりますか? use mysql; select host,user,password from user; 他のユーザー、passwordに関しては詳細説明不要です 40行ぐらいの数字と文字が表示されている状態でしょうか? たとえばこのような感じ。 +-----------+----------+-------------------------------------------+ | host | user | password | +-----------+----------+-------------------------------------------+ | localhost | root | *21A8897802948D3FF3FFFFFFFFFFF539FD0FF8CF | このような形であれば、パスワード間違いくらいしか思い当たりません。

590228
質問者

補足

回答ありがとうございます。 教えて頂いた手順通り行うとおっしゃっていただいた形になりましたので、もう一度 ソースを確認すると、やはりパスワードはコマンドプロンプトで使っているものと同 じです。それでもソースからmysqlにつなごうとすると、やはり同じエラーがでます。 ちなみに、教えて頂いた手順はどのようなことを確認するための手順ですか? また、なぜ教えて頂いたような形になれば、パスワード間違いと判断できるように なるのですか?ぜひ教えてください。

  • moousi
  • ベストアンサー率70% (21/30)
回答No.3

mysql_connectに失敗したときの対応をしていないんではないでしょうか? 対応していないので、mysql_connect時は失敗したまま処理が進み、 mysql_select_dbなどでエラーになっている状態だと予想します。

590228
質問者

補足

回答ありがとうございます。 mysql_connectについても、mysql_select_dbについても 失敗した時の処理を加えても、やはり同じエラーがでます。 失敗した場合を条件分岐させexitするようにしましたが、 失敗した場合の記述が無い場合と同じ動作をします。

  • moousi
  • ベストアンサー率70% (21/30)
回答No.2

コマンドプロンプトで、実験してみるとわかりやすいです。 C:\>mysql ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost' (using password: N O) C:\>mysql -uユーザー名 ERROR 1045 (28000): Access denied for user 'ユーザー名'@'localhost' (using password: NO) C:\>mysql -uユーザー名 -pパスワード Welcome to the MySQL monitor. mysql> つまり、ユーザーとパスワードを指定せずに、あるいは指定してないかのように扱われた状態でmysqlへのアクセスをPHPで行ったと考えられます。

590228
質問者

補足

ソースでは、 <?php $host="localhost" $user="root" $pass="****" として、 mysql_connect($host,$user,$pass); ~中略~ ?> としています。 おっしゃられるように、ユーザとパスワードを指定していない かのように扱われたのかと思われますが、ソース(あるいはほかの何か?) のどの部分を直せば良いのでしょう? いろいろ調べていますが、まだ解決できません。

  • mnabe
  • ベストアンサー率33% (427/1283)
回答No.1

ユーザ名とパスワードを確認して見てください。 その部分だけを見ると、IDが、ODBC で ローカルホストの MySQL に繋ぎに行っているとした解りません。

590228
質問者

補足

回答ありがとうございます。 phpのソース上ではユーザ名はrootで接続しに行っているのに、ユーザ名がODBCで接続しに行っている かのようなエラーです。 実験的に、ソースを変更し、ユーザ名をODBCで接続してみたら、同じエラーが出ました。 もしかして、php.ini等の設定ファイルなどで設定する必要がある部分があったりしますか?