2011-09-08 9 views
2

私はユーザdashboardを作成し、それにさまざまな特権を与えました(SHOW DATABASESなど)。私は最初にHost = [WebサーバのプライベートIP]を設定しましたが、PHPのmysql_connectから返されたアクセス拒否エラーが続いていたので、私たちのネットワーク上の任意のマシンがアクセスできるようにHost=192.168.%に設定しました。mysqlは「アクセスが拒否されました」(PHP経由で接続する場合のみ)

私は成功しMySQLWorkbenchを使用して私のMacからDBサーバ上のMySQL DBへの接続(および首尾SHOW DATABASES;を走った)が、私はちょうど私たちのウェブサーバ上でPHPを経由して接続しようとすると、私は得ることができます。Access denied for user 'dashboard'@'192.168.xx.xx' (using password: YES)

私はPHPで使用しているコードは次のとおりです。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<head> 
<?php 
$dbhost = "192.168.x.x"; // but no x's 
$dbuser = "dashboard"; 
$dbpass = "password"; // i copied&pasted the real password for other successful logins 
$dbconnect = mysql_connect($dbhost, $dbuser, $dbpass) or die(mysql_error()); 
$query = mysql_query('SHOW DATABASES;'); 
?> 
</head> 
<body> 
<? echo $query ?> 
</body> 
</html> 

セミ関連のノート:それはプレーンテキストを保存していないので、私は何とか暗号化された文字列に等しい$dbpassを設定することはできますか?

EDIT:MySQLユーザが現在[email protected]%です(localhostではありません)

EDIT 2は:WebサーバはDMZにあるので、私は、それはパブリックIPだから、それは、MySQLと通信するかもしれないと、思いましたしかし私がdashboardのホストをそれに変更すると、Host '192.168.xx.xx' is not allowed to connect to this MySQL serverが得られます。だから、それはそれは当てはまらないようだ...

+0

'dashboard @ localhost'に対するユーザアクセスしか定義していないので、' dashboard @ phpcomputer'へのユーザアクセスも許可し、それらのクレデンシャルでログインする必要があります。 – Johan

+0

こんにちは@Johan、あなたの応答のおかげで、いいえ、それはlocalhostに設定されていません。私は最初にユーザを 'dashboard @ webserver'を作成し、' [email protected]。%。% 'に変更しました(私たちのプライベートネットワーク上のマシンはそのユーザとして接続できるはずです)。 – jacob

+0

Check-1.はポートORソケットでリッスンしていますか? 2.私たちにこのユーザーの特権を教えてください。3. 192.168.x.xはローカルネットワークです – ajreal

答えて

2

パスワードには予約文字が含まれていたため、PHPでは二重引用符ではなく一重引用符で囲む必要がありました。

+0

"予約文字"とは何ですか? –

+0

言語が特定の目的のために使用する特殊文字(@は配列を識別するため、#はハッシュを識別する(perl)) – jacob

0

あなたは

GRANT ALL PRIVILEGES ON mydb.* TO 'username'@'%' 

またはちょうど同じことを実行しますが、「localhostの」@たのですか?

+0

こんにちは@ user410932、私はそれを試みました。それは私がそれを理解したように見える(上記の私の答えを参照) – jacob