1

おはよう、

ローカルの Windows 7 PC で以下のコード ブロックを作成し、実行しようとしました。残念ながら、私は受け取りました:

Connect Error (1045) Access denied for user 'dbuser'@'myhost(using password: YES)

このデータベース スキーマの localhost と % の両方を使用して、dbuser に Insert、Select、Update、および Execute を許可しました。サーバーのコマンドラインから mysql -u dbuser -p も実行できます。

コードブロックは次のとおりです。

<?php
/* Set Variables */
$host="serveripaddress";
$db="dbname"; 
$username="dbuser";
$pass="pass";

/* Attempt to connect */
$mysqli=new mysqli($host,$username,$pass,$db);
if (mysqli_connect_error()){
die('Connect Error (' . mysqli_connect_errno() . ') '
. mysqli_connect_error());
echo 'Success... ' . $mysqli->host_info . "\n";

$mysqli->close();

}
?>

上記のコード ブロックがエラーの原因なのか、それともサーバーで何かを行う必要があるのか​​を理解するのが困難です。誰かがいくつかの調査分野を提案できますか?

ありがとう、シド

4

2 に答える 2

1

MySQL でホスト名を使用している場合はGRANT、MySQL がそのホスト名を接続元の IP に適切に解決できることを確認してください。

たとえば、

GRANT blah ON *.* to user@somehost

MySQL には「somehost」が表示されず、IP アドレスが表示されることに注意してください。ホスト名を取得するには逆ルックアップを行う必要があり、IP が逆マッピングを持っていないか、まったく別のものにマップされている場合、MySQL はアクセスを許可しません。

逆マッピングが安定していることを保証できない場合は、MySQL のリモート アクセス アカウントに IP アドレスを使用することをお勧めします。

于 2010-08-20T17:19:31.340 に答える
1
<?php
/* Set Variables */
$host="127.0.0.1:3306";
$db="dbname"; 
$username="dbuser";
$pass="pass";

/* Attempt to connect */
$mysqli=new mysqli($host,$username,$pass,$db);
if (mysqli_connect_error()){
    die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error());    
}
else
{
echo 'Success... ' . $mysqli->host_info . "\n";
$mysqli->close();
}

?>

まず、if/else ステートメントにこれらの中かっこを追加します。次に、IP をハードコーディングしてみます。IPを変数に設定してこれを実行しただけで(機能しませんでした)、ハードコーディングしましたが、問題なく機能しました。

于 2010-08-20T17:35:30.733 に答える