ホームページ >データベース >mysql チュートリアル >MySQL エラー 1698 (アクセス拒否) が発生するのはなぜですか? どうすれば修正できますか?

MySQL エラー 1698 (アクセス拒否) が発生するのはなぜですか? どうすれば修正できますか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-25 13:12:12423ブラウズ

Why Am I Getting MySQL Error 1698 (Access Denied) and How Can I Fix It?

MySQL ログイン中のエラー 1698 の処理

ユーザーに エラー 1698 (28000): アクセスが拒否されました (ユーザー 'root'@) が発生する可能性があります'localhost' を使用して MySQL データベースにログインしようとすると、ルートユーザー。このエラーは、MySQL がデフォルトで認証に Unix auth_socket プラグインを使用する Ubuntu などのシステムでよく発生します。

背景: auth_socket プラグインは、認証にシステム ユーザーの資格情報に依存します。 mysql.user テーブルをクエリすると、root ユーザーがこのプラグインに登録されていることを確認できます:

SELECT User, Host, plugin FROM mysql.user;

考えられる解決策:

オプション 1 : mysql_native_password を使用するように root ユーザーを構成しますプラグイン
この方法には、より伝統的な mysql_native_password プラグインを使用するように root ユーザーを設定することが含まれます:

UPDATE user SET plugin='mysql_native_password' WHERE User='root';
FLUSH PRIVILEGES;
sudo service mysql restart

オプション 2: 新しいデータベース ユーザーを作成する (推奨)
別の方法は、システムのユーザー名を使用して新しいデータベース ユーザーを作成することです。これにより、より管理しやすく安全なオプションが提供されます:

CREATE USER 'YOUR_SYSTEM_USER'@'localhost' IDENTIFIED BY 'YOUR_PASSWD';
GRANT ALL PRIVILEGES ON *.* TO 'YOUR_SYSTEM_USER'@'localhost';
UPDATE user SET plugin='auth_socket' WHERE User='YOUR_SYSTEM_USER';
FLUSH PRIVILEGES;
sudo service mysql restart

オプション 2 では、システム ユーザー名を使用して MySQL に接続することに注意してください:

mysql -u YOUR_SYSTEM_USER

追加の考慮事項:

  • MySQL バージョン 8.x.x では、 auth_socket プラグインは caching_sha2_password に置き換えられた可能性があります。適切な認証プラグインとログイン方法については、MySQL ドキュメントを参照してください。
  • Debian 9 (Stretch) では、auth_socket プラグインの名前が unix_socket に変更されました。それに応じて SQL コマンドを調整します。

以上がMySQL エラー 1698 (アクセス拒否) が発生するのはなぜですか? どうすれば修正できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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