エラー 1698 (28000): ユーザー 'root'@'localhost' のアクセスが拒否されました 質問する

エラー 1698 (28000): ユーザー 'root'@'localhost' のアクセスが拒否されました 質問する

新しいサーバーをセットアップしているのですが、この問題が繰り返し発生します。

root ユーザーで MySQL データベースにログインしようとすると、次のエラーが発生します。

エラー 1698 (28000): ユーザー 'root'@'localhost' のアクセスが拒否されました

ターミナル(SSH)経由で接続しても、phpMyAdminまたはMySQLクライアント、例:ナビキャットそれらはすべて失敗します。

mysql.userテーブルを調べたところ、次の結果が得られました。

+------------------+-------------------+
| user             | host              |
+------------------+-------------------+
| root             | %                 |
| root             | 127.0.0.1         |
| amavisd          | localhost         |
| debian-sys-maint | localhost         |
| iredadmin        | localhost         |
| iredapd          | localhost         |
| mysql.sys        | localhost         |
| phpmyadmin       | localhost         |
| root             | localhost         |
| roundcube        | localhost         |
| vmail            | localhost         |
| vmailadmin       | localhost         |
| amavisd          | test4.folkmann.it |
| iredadmin        | test4.folkmann.it |
| iredapd          | test4.folkmann.it |
| roundcube        | test4.folkmann.it |
| vmail            | test4.folkmann.it |
| vmailadmin       | test4.folkmann.it |
+------------------+-------------------+

ご覧のとおり、ユーザーroot にはアクセス権があるはずです。

サーバーは非常に単純なので、しばらく前からトラブルシューティングを試みてきました。

走っていますウブントゥ 16.04.1Web サイトをホストできるように Apache、MySQL、PHP を搭載した LTS (Xenial Xerus)、およびメールをホストできるように iRedMail 0.9.5-1。

iRedMail をインストールする前は、MySQL データベースへのログインは正常に機能します。iRedMail をインストールしただけでも試しましたが、その後は root も機能しません。

MySQLのログイン問題を解決するにはどうすればいいですか、または既存のMySQLインストールの上にiRedMailをインストールするにはどうすればいいですか?はい、私は試しましたインストールのヒント設定ファイル内でそれらの変数を見つけることができません。

ベストアンサー1

いくつかのシステムでは、ウブントゥMySQLはUnix auth_socket プラグインデフォルトでは。

基本的に、これは次のことを意味します: これを使用する db_users は、システム ユーザー資格情報によって「認証」されます。 ユーザーがこのように設定されているかどうかを確認するには、root次の操作を実行します。

sudo mysql -u root # I had to use "sudo" since it was a new installation

mysql> USE mysql;
mysql> SELECT User, Host, plugin FROM mysql.user;

+------------------+-----------------------+
| User             | plugin                |
+------------------+-----------------------+
| root             | auth_socket           |
| mysql.sys        | mysql_native_password |
| debian-sys-maint | mysql_native_password |
+------------------+-----------------------+

クエリからわかるように、rootユーザーはプラグインを使用していますauth_socket

これを解決するには 2 つの方法があります。

  1. プラグインを使用するにはルートユーザーを設定することができますmysql_native_password
  2. db_userあなたと一緒に新しいものを作成できますsystem_user(推奨)

オプション1:

sudo mysql -u root # I had to use "sudo" since it was a new installation

mysql> USE mysql;
mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> exit;

sudo service mysql restart

オプション 2: (YOUR_SYSTEM_USER を実際のユーザー名に置き換えます)

sudo mysql -u root # I had to use "sudo" since it was a new installation

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

sudo service mysql restart

オプション 2 を使用する場合は、システム ユーザー名 ( ) として MySQL に接続する必要があることに注意してくださいmysql -u YOUR_SYSTEM_USER

注:一部のシステム(例:デビアン9(ストレッチ))「auth_socket」プラグインは'unix_socket'したがって、対応する SQL コマンドは次のようになります。UPDATE user SET plugin='unix_socket' WHERE User='YOUR_SYSTEM_USER';

からアンディのコメントauth_socketMySQL 8.xxがを更新/置き換えたようですcaching_sha2_password。これをテストするための MySQL 8.xx のシステム設定はありません。ただし、上記の手順は問題を理解するのに役立つはずです。返信は次のとおりです。

MySQL 8.0.4 での変更点の 1 つは、新しいデフォルトの認証プラグインが「caching_sha2_password」であることです。新しい「YOUR_SYSTEM_USER」にはこの認証プラグインが備わり、Bash シェルから「mysql -u YOUR_SYSTEM_USER -p」でログインし、プロンプトでこのユーザーのパスワードを入力できます。「UPDATE user SET plugin」の手順は必要ありません。

8.0.4のデフォルト認証プラグインのアップデートについては、 MySQL 8.0.4: 新しいデフォルト認証プラグイン: caching_sha2_password

おすすめ記事