0

このスクリプトを使用して外部データベースに接続しようとしています:

$dsn = 'mysql:host=xxx.xxx.xxx.xxx;dbname=dbname';
$user = 'user';
$password = 'pass';
try {
    $pdo = new PDO($dsn, $user, $password); 
    $pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
    die();
}

データ (ホスト、ユーザー名、データベース、およびパスワード) に関しては、ブラウザーで xxx.xxx.xxx.xxx/phpmyadmin をチップし、ユーザーとパスワードを入力すると、作成権限のあるデータベースにアクセスできるため、すべてが正しいです。削除など。しかし、PDO 経由で接続しようとすると、「接続に失敗しました: SQLSTATE[28000] [1045] アクセスが拒否されました...」というメッセージが表示されます。

PHPMYADMIN パネルに表示される情報は次のとおりです。 MySQL サーバー: UNIX ソケット経由のローカルホスト サーバー バージョン: 5.5.20 プロトコル バージョン: 10 ユーザー: user@localhost MySQL 文字セット: UTF-8 Unicode (utf8)

Web サーバー Apache MySQL クライアント バージョン: 5.5.20 PHP 拡張機能: mysqli

「PHP 拡張機能: mysqli」プロパティが原因で、mysqli を使用せざるを得ない可能性はありますか? 前もって感謝します!!!

4

3 に答える 3

0

setAttributeメソッドがエラー出力を警告を発生させるように設定していることを除いて、コードに問題はないようですが、try/catchブロックにいる..ので、..の使用を検討することをお勧めしますPDO::ERRMODE_EXCEPTION

次に、そのユーザー名/パスワードのリモート権限を確認してください。そのユーザー アカウントには IP 制限がある可能性があります。ユーザー アカウントにワイルドカード%を使用HOSTするか、(推奨) データベースに接続しているサーバー IP を指定できます。

于 2013-07-03T19:43:57.967 に答える
0

phpmyadmin は接続しようとしているホスト上にあるため、phpmyadmin が正常に動作していると思います。私の推測では、サーバーまたはユーザー アカウントは 127.0.0.1/localhost 経由でのみアクセスできるように構成されています。接続しようとしているユーザーの別のレコードを作成し、そのユーザーにワイルドカードまたは特定のホストを提供できます。ここで提供された情報に基づくと、他のホストからの接続を受け入れるように MySQL をセットアップするだけでよいようです。

于 2013-07-03T19:58:58.177 に答える
-1

その間、アプリケーションをローカルで実行しようとしましたが、どちらも接続できないようです。上記の問題を特定する際に、これが役立つ可能性があります。今度は (localhost で)、エラーは次のとおりです: Connection failed: SQLSTATE[HY000] [1045] Access denied for user 'xxxxxxx_xxxxxxx'@'localhost' (using password: YES)

私は自分のphpmyadminでユーザーを作成し、このデータベースに対するすべての権限を彼に付与したので、ローカルホストでも接続できない理由がわかりません。上記の問題に関連している可能性がありますか、それとも別のトピックに進むべきまったく別のものですか? ありがとうございました!

于 2013-07-05T12:22:30.937 に答える