ホームページ >データベース >mysql チュートリアル >'%' ホスト エントリがあるにもかかわらず、「ホスト 'xxx.xx.xxx.xxx' はこの MySQL サーバーへの接続を許可されていません」というメッセージが表示されるのはなぜですか?

'%' ホスト エントリがあるにもかかわらず、「ホスト 'xxx.xx.xxx.xxx' はこの MySQL サーバーへの接続を許可されていません」というメッセージが表示されるのはなぜですか?

DDD
DDDオリジナル
2024-12-20 18:06:11622ブラウズ

Why Do I Get

リモート MySQL 接続エラー: 「ホストは許可されていません」

MySQL にリモートで接続すると、「ホスト 'xxx. xx.xxx.xxx' は、この MySQL サーバーへの接続を許可されていません。」ホスト値が「localhost」と「%」の両方を持つ root ユーザー エントリがあるにもかかわらず、接続は失敗します。

この問題は通常、MySQL によって実装されたセキュリティ対策が原因で発生します。考えられる解決策の 1 つは、特定の権限とアクセス制限を持つ新しい管理ユーザーを作成することです:

新しい管理ユーザーの作成:

mysql> CREATE USER 'monty'@'localhost' IDENTIFIED BY 'some_pass';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost' ->     WITH GRANT OPTION;
mysql> CREATE USER 'monty'@'%' IDENTIFIED BY 'some_pass';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%' ->     WITH GRANT OPTION;

ただし、広範な権限を付与するのが便利です。 、セキュリティ上のリスクがあるため、お勧めできません。代わりに、次のことを行うことが賢明です。

  • 必要な特定のホストと IP へのユーザー アクセスを制限します。
  • 現在のタスクに必要な権限のみを付与します。

MySQL FAQ Insight:

MySQL FAQ では、この問題についてさらに詳しく説明されています:

「「アクセスが拒否されました」というメッセージが表示される理由がわからない場合は、ワイルドカード (「% または _」など) を含むホスト値を持つすべてのユーザー テーブル エントリを削除してください。 localhost 接続を有効にするために、誤って host='%' および user='some_user' のエントリを挿入することがよくありますが、デフォルトの権限には というエントリが含まれているため、機能しません。 host='localhost' および user=''。localhost エントリはより具体的であり、代わりに使用されます。localhost 接続を許可するには、host='localhost' および user='some_user' を含む 2 番目のエントリを挿入するか、デフォルトの localhost を削除します。エントリを入力し、FLUSH PRIVILEGES ステートメントを発行します。"

以上が'%' ホスト エントリがあるにもかかわらず、「ホスト 'xxx.xx.xxx.xxx' はこの MySQL サーバーへの接続を許可されていません」というメッセージが表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。