権限がないため、ユーザー 'root'@'localhost' のアクセスが拒否されました
問題:
root ユーザーとして MySQL にアクセスしようとすると、次のような問題が発生します。 「ユーザー 'root'@'localhost' のアクセスが拒否されました (パスワード: YES を使用)」エラー。root ユーザーに接続を確立するために必要な権限がないことを示します。
説明:
デフォルトでは、MySQL 5.7 以降は主にローカル接続のソケット認証に依存します。これは、「sudo mysql」としてコマンド ライン経由で接続しようとする場合、パスワードは必要ないことを意味します。ただし、この認証方法では root ユーザーに特定の権限は付与されません。
解決策:
パスワードベースの接続を確立し、root ユーザー権限を付与するには:
- 「SELECT user、authentication_string、plugin、host FROM mysql.user;」を実行します。現在のユーザー構成を確認するためのクエリ。 root ユーザーの認証プラグインが「auth_socket」であることを確認します。
- 「ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Current-Root-Password';」を実行します。 root ユーザーの認証方法をソケットからネイティブに変更するステートメント。
- 「FLUSH PRIVILEGES;」を実行します。コマンドを使用して、変更が有効になっていることを確認します。
- 手順 1 を繰り返して、root ユーザーの認証プラグインが「mysql_native_password」に変更されたことを確認します。
追加の考慮事項:
- 「Current-Root-Password」は、既存の root ユーザーのパスワードに置き換える必要があります。
- MySQL バージョン 5.7 より前の場合、認証方法は「caching_sha2_password」である可能性があります。この場合、「ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'Current-Root-Password';」を使用します。
- MariaDB ユーザーの場合、次のコマンドを使用して root ユーザーのパスワードを設定できます: "SET PASSWORD FOR 'root'@'localhost' = PASSWORD('manager');"
以上がMySQL で「ユーザー 'root'@'localhost' のアクセスが拒否されました」というメッセージが表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。