最初に言っておきますが、提案された質問の多くを検討しましたが、適切な回答が見つかりませんでした。これが私がやっていることです。
Amazon EC2 インスタンスに接続しています。次のコマンドを使用して MySQL root ユーザーにログインできます:
リーリー次に、ホスト %
で新しいユーザー請求書を作成しました。 リーリーユーザー bill にすべての権限を付与します:
リーリー次に、root ユーザーを終了し、bill ユーザーを使用してログインを試みます:
リーリー正しいパスワードを入力すると、次のエラーが発生します:
エラー 1045 (28000): ユーザー "bill"@"localhost" のアクセスが拒否されました (パスワードを使用: YES)
P粉2873452512023-09-18 00:36:21
匿名ユーザー ''@'localhost'
または ''@'127.0.0.1'
が存在する可能性があります。
localhost から接続するときに、
'[any_username]'@'%' などの他のユーザーを「ブロック」します。
'bill'@'localhost' は
'bill'@'%' と一致しますが、(たとえば)
''@'localhost'# よりも前に一致します。 ##。
推奨される解決策は、この匿名ユーザーを削除することです (通常、これは良い考えです)。
編集 1
ソケット経由で
'bill'@'%' として認証します。
リーリー
ネットワークを再アクティブ化し、匿名ユーザー
''@'localhost' を作成した点を除いて、まったく同じセットアップです。
リーリー
編集 2 と同じ状況で、匿名ユーザーのパスワードを指定します。
リーリー結論 1、編集 1 から:
'bill'@'%' の認証はソケット経由で可能です。
編集 2 からの結論 2: TCP 経由で接続するかソケット経由で接続するかは、認証プロセスには影響しません (
any 以外のソケット経由で接続できないことを除けば)他のユーザー)。
結論 3、編集 3 より:
を指定したにもかかわらず、匿名ユーザーとしてアクセスが許可されました。これは、上で提案した「順序付けルール」によるものです。ほとんどのデフォルトのインストールでは、パスワードを持たない 匿名ユーザー
が存在することに注意してください (パスワードは保護または削除する必要があります)。