👏
【MySQL】ActiveRecord::ConnectionNotEstablished: Access denied を解消したい
はじめに
発生したエラー
ActiveRecord::ConnectionNotEstablished: Access denied for user 'wdyluser'@'localhost' (using password: YES)
Mysql2::Error::ConnectionError: Access denied for user 'wdyluser'@'localhost' (using password: YES)
結論
config/database.yml
password: 00000
↓
password: "00000"
結論:config/database.ymlに設定するパスワードは" "(または ' ' )で囲わないといけません、、、
前ふり
前提
railsでアプリを作っており、DBは、初めはSQLiteを使ってましたが、MySQLへ移行することとなりました。
その移行の際に、おもいっきりハマりましたので、同じような方の手助けとなるべく、この記事を書きます。
環境
macOS BigSur 11.1
mysql Ver 8.0.23
ruby 2.7.0p0
Rails 6.1.1
実践
このRailsのDBを(初めから| |後から)MySQLに変更するを参考に進めていきます。
(とても参考になりました)
MySQLをGemfileに加える
Gemfile
gem 'mysql2'
# gem 'sqlite3', '~> 1.4'
↓
bundle install
config/database.ymlに設定を書く
※MySQL側で作成した、databaseやusername,passwordなどを記述します(前もって作っておきます)
config/database.yml
default: &default
adapter: mysql2
database: wdyldb
username: wdyluser
password: 00000 ← ※間違っています
host: 127.0.0.1
encoding: utf8
development:
<<: *default
test:
<<: *default
production:
<<: *default
db:migrateの実行
bundle exec rails db:migrate
を実行する、、、
しかし、
ActiveRecord::ConnectionNotEstablished: Access denied for user 'wdyluser'@'localhost' (using password: YES)
Mysql2::Error::ConnectionError: Access denied for user 'wdyluser'@'localhost' (using password: YES)
このエラーが発生、、、
試したこと
- MySQLにログインできるか
mysql -uwdyluser -p00000
↓
できた(usernameとそのパスワードは正しい)
- DBは存在しているか
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| wdyldb |
+--------------------+
2 rows in set (0.00 sec)
↓
存在する
- userは存在しているか、また、権限はあるか
mysql> show grants for wdyluser@localhost;
+--------------------------------------------------------------+
| Grants for wdyluser@localhost |
+--------------------------------------------------------------+
| GRANT USAGE ON *.* TO `wdyluser`@`localhost` |
| GRANT ALL PRIVILEGES ON `wdyldb`.* TO `wdyluser`@`localhost` |
+--------------------------------------------------------------+
↓
存在している、権限もある
解決方法
config/database.yml
password: 00000
↓
password: "00000"
パスワードを" "で囲ったらマイグレーションが通りました!
時間を無駄にした感がすごかったので、私のような人が減るように、共有します!
Discussion