[解決済み] エラー 1698 (28000)。ユーザー 'root'@'localhost' のアクセスが拒否されました。
質問
新しいサーバーを立ち上げているのですが、この問題に何度も遭遇しています。
MySQLデータベースにrootユーザーでログインしようとすると、エラーが発生します。
エラー 1698 (28000)。ユーザー 'root'@'localhost' のためのアクセスが拒否されました。
ターミナル(SSH)で接続しても、(1)で接続しても、(2)で接続しても、(3)で接続しても問題ない。 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 |
+------------------+-------------------+
ご覧の通り、ユーザー ルート はアクセスできるはずです。
Serverは、ここしばらくトラブルシューティングを試みたので、非常にシンプルです。
動作しているのは Ubuntu 16.04.1 LTS (Xenial Xerus) で、Apache, MySQL, PHP でウェブサイトをホストし、iRedMail 0.9.5-1 でメールをホストすることができます。
iRedMailをインストールする前にMySQLデータベースにログインすると正常に動作します。また、iRedMailだけをインストールしてみましたが、rootも機能しません。
または、既存のMySQLの上にiRedMailをインストールするにはどうすればよいですか?そして、はい、私は インストールのヒント と表示され、設定ファイルにそれらの変数が見当たりません。
解決方法は?
Ubuntu などの一部のシステムでは、MySQL が UNIX auth_socket プラグイン をデフォルトで使用します。
基本的にはそのような意味です。
これを使用するdb_usersは、quot;authenticated"で認証されます。
システムのユーザー資格情報。
を確認することができます。
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つあります。
-
を設定することができます。
ルート
ユーザが
mysql_native_password
プラグイン -
を新規に作成することができます。
db_user
でsystem_user
(推奨)
オプション1:
sudo mysql -u root # I had to use "sudo" since it was 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 is 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
).
注
一部のシステムで(例.
Debian 9
(Stretch)) 'auth_socket' プラグインは、以下のように呼ばれます。
'unix_socket'(ユニックスソケット
ということで、対応するSQLコマンドは、以下のようになります。
UPDATE user SET plugin='unix_socket' WHERE User='YOUR_SYSTEM_USER';
andy のコメントから、MySQL 8.x.x が更新/置換されたようです。
auth_socket
に対して
caching_sha2_password
. 私はこれをテストするためにMySQL 8.x.xのシステムセットアップを持っていません。しかし、上記の手順は、問題を理解するのに役立つはずです。以下はその回答です。
MySQL 8.0.4 での変更点として、新しいデフォルトの認証プラグインが 'caching_sha2_password' になったことが挙げられます。新しい 'YOUR_SYSTEM_USER' はこの認証プラグインを持ち、Bash シェルから "mysql -u YOUR_SYSTEM_USER -p" でログインでき、このユーザーのパスワードをプロンプトで提供します。UPDATE user SET plugin"のステップは必要ありません。
8.0.4のデフォルト認証プラグインのアップデートについては https://mysqlserverteam.com/mysql-8-0-4-new-default-authentication-plugin-caching_sha2_password/
関連
-
Mysqlデータベースの手動および定期的なバックアップ手順
-
Mysql がエラーを報告 オペランドには 1 つのカラムが含まれている必要があります。
-
SQL Server のトランザクションは、try キャッチに記述しなければ、中間ステートメントがエラーを報告してもコミットされます。
-
[解決済み] MySQLでコマンドラインを使用してSQLファイルをインポートするにはどうすればよいですか?
-
[解決済み] MySQLデータベースのテーブルのサイズを取得する方法は?
-
[解決済み] MySQL ERROR 1045 (28000)。ユーザー 'bill'@'localhost' (使用パスワード: YES)のアクセスが拒否されました。
-
[解決済み] MySQL Error: : 'Access denied for user 'root'@'localhost'
-
[解決済み】macOSでbrew install mysqlをする。
-
[解決済み] ユーザー 'root'@'localhost' に権限を付与しようとしたところ、アクセスが拒否されました。どのようにすればよいですか?
-
[解決済み] MySQLのリモート接続を有効にします。エラー 1045 (28000)。ユーザーへのアクセスが拒否されました
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
mysqlでインデックスに障害が発生する原因は何ですか?
-
MySQLデータベースでvarchar型の数値の大きさを比較する方法
-
SQLException。オペランドは1列でなければなりません。
-
[解決済み] MySQLルートパスワード変更
-
[解決済み] どのトランザクションが「テーブルメタデータのロック待ち」状態を引き起こしているかを確認するにはどうすればよいですか?
-
[解決済み] SQLを使用してSUMとSUBTRACTを行うには?
-
[解決済み] Mysqlでidを使用してテーブルから多くの行を削除する
-
[解決済み] INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOINの違いは何ですか?[重複しています]。
-
[解決済み] MySQLのクエリ結果をCSV形式で出力するにはどうすればよいですか?
-
[解決済み] MySQL で特定のカラム名を持つすべてのテーブルを見つけるにはどうすればよいですか?