- 締切済み
お世話になります。
お世話になります。 ○PHPでMySQL 接続テスト ○環境 ・サーバー ホスト名:linux.nikoniko.com(仮名) OS:Centos 5.5 PHP: 5.3.3 MySQL: 5.1.49 ・クライアント OS:Windows7(pro) 各ツール:XAMPP 1.7.3 Eclipse IDE for PHP Developers:1.2.2.20100216-1730 ○行いたいこと phpでDB接続のテストを行っています。 php用にMySQLのユーザーを作成し、クライアントからphpでDB接続できるか確認のテストです。 ○行ったこと 以下SQL文で GRANT ALL PRIVILEGES ON *.* TO centos@linux.nikoniko.com IDENTIFIED BY 'centos' WITH GRANT OPTION MySQLのユーザーcentosを作成しました。 作成した「centos」のユーザーでphpMyAdmin とサーバー上のコマンドで「centos」でログインは出来たのですが 以下のphpコードでホスト名とユーザーを指定し接続を試みると以下のエラーで接続できません。 ・phpコード <?php $mysql_con = mysql_connect("linux.nikoniko.com:3306","centos","centos"); if ($mysql_con == false){ print "DB接続エラー!"; } else { print "DB接続OK!"; } ?> ・実行エラー Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'centos'@'192.168.1.10' (using password: YES) in C:\xampp\htdocs\PHP_Lesson\mysql_connect\dbconnect.php on line 3 上記phpコードでユーザー名を「root」にすると接続はできます。 新たにMySQLのユーザーを作成(ここではcentos)して上記phpコードで接続できるようにするにはどうすればいいのでしょうか。 宜しくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- taka451213
- ベストアンサー率47% (436/922)
こんにちは。 >PHPはクライアント(WIndows)、MySQLは(Centos)で動かしていますので >別PCです・・・ あらそ・・・、とんだ早とちりで失礼しました・・・。 サーバーのIPアドレスは、192.168.1.10でいいんですか? エラーメッセージから判断するに、ホストの名前解決ができてないように見えます。 mysqladmin flush-hostsを実行して内部DNSキャッシュをリセットしても駄目な場合、 1. DNSサーバーの問題を修正。 2. GRANT ALL PRIVILEGES ON *.* TO centos@linux.nikoniko.com IDENTIFIED BY 'centos' WITH GRANT OPTION の代わりに GRANT ALL PRIVILEGES ON *.* TO centos@192.168.1.10 IDENTIFIED BY 'centos' WITH GRANT OPTION にする。 3. --skip-name-resolveオプションでmysqldを開始する。 4. --skip-host-cacheオプションでmysqldを開始する。 などなどありますが・・・。 個人的にはIP指定にするか「%」でやっちゃうか、がいいかと思います。 セキュリティを考慮するなら「%」はお勧めしませんが・・・。
- taka451213
- ベストアンサー率47% (436/922)
こんにちは。 PHPからMySQLに接続するときに、同じマシンで動いているので、 $mysql_con = mysql_connect("linux.nikoniko.com:3306","centos","centos"); ではなく、 $mysql_con = mysql_connect("localhost:3306","centos","centos"); となりますね。 という事は、 GRANT ALL PRIVILEGES ON *.* TO centos@linux.nikoniko.com IDENTIFIED BY 'centos' WITH GRANT OPTION だけでは不十分だという事がわかると思います・・・。 centos@localhost を作るか、面倒臭かったら、 centos@% にしないと駄目でしょう・・・。
お礼
taka451213 さん。こんばんは。 アドバイスありがとうございます。 >PHPからMySQLに接続するときに、同じマシンで動いているので、 ごめんなさい。PHPはクライアント(WIndows)、MySQLは(Centos)で動かしていますので 別PCです・・・