おそらくセキュリティ上の予防措置。新しい管理者アカウントを追加してみてください:
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;
Pascalや他の人が指摘しているように、この種のアクセス権を持つユーザーを任意のIPに公開するのは良い考えではありません。管理ユーザーが必要な場合は、rootを使用し、ローカルホストに残します。その他のアクションについては、必要な権限を正確に指定し、Pascalが以下に提案するようにユーザーのアクセスを制限します。
編集:
MySQL FAQから:
getAccessが拒否された理由がわからない場合は、ワイルドカードを含むHostvalues('%'または'_'文字を含むエントリ)を持つすべてのエントリをユーザーテーブルから削除します。非常に一般的なエラーは、Host ='%'およびUser ='some_user'の新しいエントリを挿入することです。これにより、同じマシンから接続するlocalhostを指定できると考えられます。これが機能しない理由は、デフォルトの特権にHost='localhost'およびUser=''のエントリが含まれているためです。そのエントリには「%」よりも具体的なホスト値「localhost」があるため、ローカルホストから接続するときに新しいエントリよりも優先して使用されます。正しい手順は、Host ='localhost' andUser ='some_user'の2番目のエントリを挿入するか、Host ='localhost' andUser=''のエントリを削除することです。エントリを削除した後、FLUSH PRIVILEGESステートメントを発行して、許可テーブルを再ロードすることを忘れないでください。セクション5.4.4「AccessControl、ステージ1:ConnectionVerification」も参照してください。