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

締切り済みの質問

お世話になります。

お世話になります。

○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コードで接続できるようにするにはどうすればいいのでしょうか。

宜しくお願いします。

投稿日時 - 2010-08-14 21:44:00

QNo.6109687

困ってます

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

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

回答(2)

ANo.2

こんにちは。

>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指定にするか「%」でやっちゃうか、がいいかと思います。
セキュリティを考慮するなら「%」はお勧めしませんが・・・。

投稿日時 - 2010-08-16 11:19:04

ANo.1

こんにちは。

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@%
にしないと駄目でしょう・・・。

投稿日時 - 2010-08-15 17:25:03

お礼

taka451213 さん。こんばんは。

アドバイスありがとうございます。

>PHPからMySQLに接続するときに、同じマシンで動いているので、
ごめんなさい。PHPはクライアント(WIndows)、MySQLは(Centos)で動かしていますので
別PCです・・・

投稿日時 - 2010-08-15 23:24:21

あなたにオススメの質問