3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

WSL2のMySQLでroot@localhostに入れない問題を解決した備忘録

Last updated at Posted at 2022-02-23

症状

WSL2にMicrosoftの指示に従ってMySQLを入れると

mysql -u root -p

でいくらやってもrootuserでmysqlにログイン出来ない。(パスワードが使えないよぅとか言ってくる。インスコ時に入れたくね!?って思うんやけど)
ただし、

sudo mysql

ならば、ログインできる。

原因

とりまログインした状態で

mysql> select user,host, plugin FROM mysql.user;

をすると、

+------------------+-----------+-----------------------+
| user             | host      | plugin                |
+------------------+-----------+-----------------------+
| iroiro           | localhost | caching_sha2_password |
| root             | localhost | auth_socket           |
+------------------+-----------+-----------------------+

みたいな表示が出てくる。で、調べたところによるとmysql-community-serverのインストール時にrootのパスワードをUNIX socketベースの認証をすることができるらしく、それをやってしまっているためにLinux側でrootユーザーならMySQLもrootユーザーという認証の仕方になってしまっている。

なので、いくら

SET PASSWORD

だのなんだのやっても、パスワードが変更したり出来ない。

解決方法

rootでログインした状態で以下のコマンドを実行する。

mysql>ALTER USER root@localhost IDENTIFIED WITH caching_sha2_password BY 'hogehoge';

hogehogeにはパスワードを入れる。終わり。

感想

今どきの人はみんなDocker使うから設定時点で多分パスワードとか入れるので、こんなこと起きないのかなぁと思いながら、またいつか自分が引っかかったときのために残しておくことにした。

追記

僕はNode.jsでMySQLを使うおうとして、このエラーにあたったわけだが

npm install mysql

でインストールされるmysqlを使うと今度はcaching_sha2_passwordがサポートされていない。
ので、

npm install mysql2

をして、mysql2を使うと良い。

参考文献

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?