0
0

More than 3 years have passed since last update.

Access denied for user 'root'@'localhost' (using password: NO) エラーの対処法

Posted at

エラーの内容

rails s をした後、ブラウザを見てみると下記のようなエラーが発生しました↓

Mysql2::Error::ConnectionError
Access denied for user 'root'@'localhost' (using password: NO)

要するに、
パスワードがないからアクセスできないぞ!
ということです。

エラーの解決方法

エラーの解決方法は2通りあります。
1. MySQLで設定したパスワードをdatabase.ymlにベタ書きする。
2. rootユーザーのパスワードを空にする。

個人で開発する際は1でもいいのですが、チーム開発となるとチームでパスワードを共通化する必要があり、少し面倒なので今回は2について詳しくやっていきます。1についても簡単に記載します。

1. database.ymlにベタ書きする。

database.yml
default: &default
  adapter: mysql2
  encoding: utf8mb4
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: root
  password: #ここにパスワードを書く
  socket: /tmp/mysql.sock

一番簡単な解決方法は上記の箇所にパスワードを書くことです。
しかし、GitHubなどのバージョン管理システムにプッシュするとパスワードが露出してしまうので、.envファイルでパスワードを管理し、それを.gitignoreに記載するといった対策が必要になります。

2. rootユーザーのパスワードを空にする。

MySQLを起動させます。

$ mysql.server start

MySQLにログインします。

$ mysql -u root -p
Enter password: #現在のPWを入力

使用するデータベースを選択します。

mysql> use mysql;

パスワードを空にします。
MySQL 5.7.6でパスワードのカラム名がpasswordからauthentication_stringに変わった点に注意してください。

mysql> update user set authentication_string='' where user='root';

上記のコードが上手くいけば、変更できたことが表示されます。

Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

変更が成功したらMySQLを閉じます。

mysql> exit

変更を反映させるためにMySQLを一度ストップします。

$ mysql.server stop

再び起動させます。ストップしずにリスタートでも大丈夫だと思います。

$ mysql.server start

そして、パスワードなしでログインできることを確かめてください。

$ mysql -u root

ログインできたら、もう1度MySQLを閉じてサーバーを起動させてください。

$ rails s

そしてブラウザを開いたら、、、
スクリーンショット 2020-11-05 17.05.11.png

無事エラーが解決されましたね。
お疲れ様でした!

参考サイト

日々の覚書

0
0
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
0
0