0

私の問題は、サーバーから別の外部サーバーに接続しようとすると、このコマンドでエラーが発生することです。

mysql -h db.hostname.com -u username -pP@ssword database_name

そしてこれはエラーです:

エラー1044(42000):データベース'database_name'へのユーザー'username' @'%'のアクセスが拒否されました

私はすでに外部サーバー管理者にファイアウォールにIPを追加するように依頼しましたが、役に立ちませんでした。

これは、「ユーザー名」への権限の付与と関係があります

4

2 に答える 2

1

MySQL接続を拒否しているため、ファイアウォールの問題ではありません。ご想像のとおり、これはユーザーに付与された特権に問題があります。mysqlサーバーでこれを実行する必要があります(dbにすべての特権を付与したくない場合は、これを少し調整する必要があるかもしれません):

GRANT ALL ON database_name.* TO 'username'@'%' IDENTIFIED BY 'P@ssword';

また、常に特定のホスト/ IPから接続する場合は、%どこからでも接続できるワイルドカードを使用するのではなく、そのホスト/IPを指定することをお勧めします。

于 2010-10-06T23:13:41.603 に答える
0

パスワードが間違っているか、使用しようとしているユーザー名がコンピューターのIPアドレスから接続できないようです。

ご存知のように、リモートサイトのmysql管理者は、特定のユーザーアカウントを使用して接続を許可するIPを指定できます。コンピュータのIPアドレスは、外部データベースに到達する前に、会社側のあらゆる種類のルーターやファイアウォールを経由してルーティングされる可能性があることに注意してください。その結果、IPは外部データベースとは異なって見える場合があります。その場合、外部データベース管理者があなたのIPを「許可された」リストに追加しても役に立ちません。代わりに「外部の世界」のIPアドレスを追加する必要があります。

これが当てはまるかどうかを確認する最も簡単な方法は、次のとおりです。www.whatismyip.comにアクセスし、画面にIPアドレスを書き留めます。これは、「外の世界」から見たあなたのIPです。このIPは、実際には会社のネットワーク内のファイアウォールまたはルーターの外部IPであり、コンピューターのIPではない可能性があります。

次に、(Windowsを使用していると仮定して)[スタート]>[実行]に移動します。cmdと入力し、Enterキーを押します。ipconfigと入力し、Enterキーを押します。これで、ローカルIPアドレスを確認できます。

これらの2つのIPが一致しない場合は、リモート管理者に外部IPを「許可」リストにも追加するように指示してください。

また、本番環境に移行し、コードを別のサーバーに移動すると、IPの楽しみが再び始まります。これをすぐに修正したほうがいいでしょう

于 2011-02-16T13:43:22.040 に答える