エラー1698(28000)。ユーザー 'root'@'localhost' のアクセスが拒否されました。
私は新しいサーバーをセットアップしていますが、この問題に直面しています。
MySQLデータベースにrootユーザーでログインしようとすると、以下のようなエラーが発生します。
ERROR 1698 (28000):Access denied for user 'root'@'localhost'
ターミナル(SSH)から接続しても、PHPMyAdminから接続しても、MySQLクライアント(Navicatなど)から接続しても同じです。どれも失敗します。
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がアクセスできるはずです。
このサーバーは非常にシンプルで、私は今までにこれをトラブルシューティングしようとしたことがあります。
Ubuntu 16.04.1 LTSを使用しており、Apache、MySQL、PHPを使用してウェブサイトをホストし、iRedMail 0.9.5-1を使用してメールをホストしています。
iRedMailをインストールする前に、MySQLデータベースへのログインは問題なくできました。また、iRedMailをインストールするだけではなく、root権限でのログインも試してみましたが、こちらもうまくいきませんでした...。
もし誰かが、私のMySQLログイン問題を解決する方法や、既存のMySQLインストールの上にiRedMailをインストールする方法を教えてくれれば幸いです。はい、Installation Tipsを試してみましたが、設定ファイルにそれらの変数を見つけることができません。
306
3
Ubuntuなどのシステムでは、mysqlはデフォルトでUNIX auth_socket pluginを使用しています。
基本的には以下のようになります。このプラグインを使用しているdb_usersは、システムユーザーのcredentiasによって"auth"されます。 あなたの
root
ユーザーがこのように設定されているかどうかは、次のようにして確認することができます。クエリを見ればわかるように、
root
ユーザーはauth_socket
プラグインを使用しています。これを解決するには2つの方法があります。
1.ルートユーザが
mysql_native_password
プラグインを使うように設定する。 2.system_user "で新しい "db_user "を作成する(推奨)。オプション1:__
選択肢2:__ (YOUR_SYSTEM_USERをあなたが持っているユーザー名に置き換えてください)
オプション2を使用する場合、システムユーザー名でmysqlに接続しなければならないことを覚えておいてください(
mysql -u YOUR_SYSTEM_USER
)。注意: 一部のシステム(例:Debian stretch)では 'auth_socket' プラグインは 'unix_socket'と呼ばれているため、対応するSQLコマンドは次のようになります。
UPDATE user SET plugin='unix_socket' WHERE User='YOUR_SYSTEM_USER';
。**アップデート @andyさんのコメントによると、mysql 8.x.xでは
caching_sha2_password
のためのauth_socket
が更新され、置き換えられたようです。以下はその回答です。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のdefault authプラグインのアップデートについては、https://mysqlserverteam.com/mysql-8-0-4-new-default-authentication-plugin-caching_sha2_password/を参照してください。
私は、Mysqlの接続を削除することをお勧めします。
UPDATE-これはMysqlバージョン5.5用ですが、あなたのバージョンが異なる場合は、1行目を適宜変更してください。
そして再度インストールしますが、今回はrootのパスワードを自分で設定してください。 これでかなりの手間が省けます。
MySQLにrootユーザーでアクセスしたいが、rootの正しいパスワードを教えていない。
rootの新しいパスワードを設定する必要がある場合は、MySQLのサイトにその方法についての素晴らしいドキュメントがあります。http://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html
上記のリンク先にあるMySQLのドキュメントは分かりやすく簡潔なので、ここではその手順を紹介しません**。