ホームページ >データベース >mysql チュートリアル >正しい資格情報を使用しているにもかかわらず、MySQL がエラー 1045: アクセスが拒否されるのはなぜですか?

正しい資格情報を使用しているにもかかわらず、MySQL がエラー 1045: アクセスが拒否されるのはなぜですか?

DDD
DDDオリジナル
2024-12-17 04:28:25733ブラウズ

Why Does MySQL Return Error 1045: Access Denied Even with Correct Credentials?

MySQL エラー 1045: 正しい資格情報にもかかわらず、ユーザー 'bill'@'localhost' のアクセスが拒否されました

リモート MySQL データベースにアクセスしようとしたときコマンド ラインを使用すると、ユーザーに「エラー 1045: ユーザーのアクセスが拒否されました」というメッセージが表示される場合があります。 「bill'@'localhost'」メッセージ。正しいログイン資格情報を提供したにもかかわらず接続が拒否されたことを示します。

調査:

ユーザーが新しいユーザーを作成しました「bill」という名前を付け、ユーザーに必要なすべての権限を付与し、root ユーザー アカウントを終了しました。ただし、それ以降、ローカル マシン ('localhost') からユーザー 'bill' としてログインしようとすると、エラーが発生します。

根本原因:

多くの場合、これはこの問題は、「mysql.user」テーブルに匿名ユーザー (ユーザー名が空で、ホストとして「localhost」を持つユーザー) が存在するために発生します。 「localhost」から接続する場合、サーバーは、最も具体的なホスト名または IP アドレスに基づいて、一致するユーザー アカウントを優先します。

解決策 1: 匿名ユーザーを削除します

解決するにはこの問題については、「mysql.user」から匿名ユーザーを削除してください。表:

DELETE FROM mysql.user WHERE user = '' AND host = 'localhost';

解決策 2 (MySQL バージョン >= 5.7 の場合):

MySQL バージョン 5.7 以降を使用している場合は、匿名の使用を無効にすることができます。 「skip_name_resolve」によるアカウント変数:

SET GLOBAL skip_name_resolve = ON;

追加の考慮事項:

ソケット接続:

この例では、ユーザーは接続していますソケット経由で。ログイン パスで構成された匿名ユーザーは、提供された認証情報をオーバーライドする可能性があるため、「ユーザー」フィールドと「パスワード」フィールドが正しく指定されていることを確認することが重要です。

TCP 接続:

TCP 経由で接続する場合は、ホスト名または IP アドレスを指定するのではなく、-h フラグを使用する必要があります。 localhost:

mysql -u bill -p -hremote_hostname

空のユーザー名:

一部のクライアント ライブラリは空のユーザー名を適切に処理しません。匿名ユーザーを表すには、'' の代わりに '@' 記号を使用する必要があります:

mysql -u'@'localhost'-ppassword

以上が正しい資格情報を使用しているにもかかわらず、MySQL がエラー 1045: アクセスが拒否されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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