0

MySQL にアクセスできる PHP Web サイトを開発しています。私のホスティング サイトは共有phpmyadminされており、共有ホスティング サーバーにインストールされている から DB を作成しました。2 人のユーザーを作成しました。1 人は管理者権限を持ち、もう 1 人は読み取り/書き込み権限のみを持ちます。両方のアカウントを使用して phpmyadmin に正常に接続できますが、同じアカウントと同じ資格情報を使用して mysql にアクセスしようとすると、php から次のように表示されます。

Database connection failed: Access denied for user 'myusername'@'localhost' (using password: YES)

これは非常に奇妙です。PHPMyAdminサーバーはlocalhostであると言うのでmysql_connect、phpの関数に正しいサーバーパラメーターを使用していることを意味します.

何がうまくいかなかったのか誰にも分かりますか?mysql が PHPMyAdmin に対してのみ有効になっている可能性はありますか (これはばかげています)。

どうもありがとうございました。助けていただければ幸いです。:)

サンプル コードは次のとおりです (セキュリティ上の理由から、ユーザー名とパスワードは置き換えられます)。

defined('DB_SERVER') ? null : define("DB_SERVER", "localhost");
defined('DB_USER')   ? null : define("DB_USER", "host_admin");
defined('DB_PASS')   ? null : define("DB_PASS", "mysuperpassword");
defined('DB_NAME')   ? null : define("DB_NAME", "mydb_inhostingserver");

...

$this->connection = mysql_connect(DB_SERVER, DB_USER, DB_PASS);

if (!$this->connection) {
    die("Database connection failed: " . mysql_error());
} else {
    $db_select = mysql_select_db(DB_NAME, $this->connection);

    if (!$db_select) {
    die("Database selection failed: " . mysql_error());
    }
}

...

Database connection failed: Access denied for user 'host_admin'@'localhost' (using password: YES)

4つの定数もエコーしましたが、それらの値は正しいです! 私はここで本当に迷っています...

追加情報:

  • FTP アドレスは ftp.thewebsiteimtalkingabout.com です。
  • PhpMyAdmin のアドレスは mysql.thewebsiteimtalkingabout.com です。

これは、私のコードと MySQL の phpmnyadmin が同じホストで実行されていることを意味しますか?

答え:

わかりましたので、ドメインは同じですが、別のサーバーにあるという理論をテストしていました。それぞれの IP アドレスを抽出したところ、それらが異なることがわかりました。次に、「localhost」パラメーターを phpmyadmin が存在する場所の IP アドレスに置き換えたところ、ブームになりました! これで接続されました。返信ありがとうございます!

4

1 に答える 1

3

Eepot - これは、アプリケーションが mySQL データベースと同じサーバーにあるという意味ではありません。

たとえば、私のホストでは、データベースは別のサーバーにありますが、phpmyadminはそのサーバーにもあります。これは、「phpmyadmin」がサーバーを「localhost」として報告していることを意味しますが、アプリケーションは完全なサーバー名を使用してサーバーに接続する必要があります。

MySQL サーバーに接続するための詳細については、ホスティング プロバイダーに問い合わせる必要があります。

于 2012-09-04T06:17:04.510 に答える