#状況
AWS(EC2)で、railsサーバーを立ち上げるため
DBを新規作成したい。
しかし、実行すると下記のエラーが、、、
サーバー
[ec2-user@ip-●●● <リポジトリ名>]$ rails db:create RAILS_ENV=production
Mysql2::Error::ConnectionError: Access denied for user ''@'localhost' to database '<リポジトリ名>_production': CREATE DATABASE `<リポジトリ名>_production` DEFAULT CHARACTER SET `utf8`
Couldn't create '<リポジトリ名>_production' database. Please check your configuration.
rails aborted!
ActiveRecord::StatementInvalid: Mysql2::Error::ConnectionError: Access denied for user ''@'localhost' to database '<リポジトリ名>_production': CREATE DATABASE `<リポジトリ名>_production` DEFAULT CHARACTER SET `utf8`
/var/www/<リポジトリ名>/bin/rails:9:in `<top (required)>'
/var/www/<リポジトリ名>/bin/spring:15:in `<top (required)>'
bin/rails:3:in `load'
bin/rails:3:in `<main>'
Caused by:
Mysql2::Error::ConnectionError: Access denied for user ''@'localhost' to database '<リポジトリ名>_production'
/var/www/<リポジトリ名>/bin/rails:9:in `<top (required)>'
/var/www/<リポジトリ名>/bin/spring:15:in `<top (required)>'
bin/rails:3:in `load'
bin/rails:3:in `<main>'
Tasks: TOP => db:create
(See full trace by running task with --trace)
#解決策
結論は一番下に記載。
まずは試したことから。
解決先として一番解説されているのが、
mySQLの確認。
コマンドで立ち上げる。
サーバー
sudo service mysqld start
これでもダメで、変に作成されていないか
下記記事でリセットを試したが、これでも解決せず。
散々エラー文と、なぜ起こっているかを確認して
やはり
「設定がおかしいから」というのは間違いないようなので
再度、database.yamlのファイルを見直して間違いを発見!!
#結論
database.yaml
username: root
password: <%= ENV['DATABASE_PASSWORD'] %>
socket: /var/lib/mysql/mysql.sock
この3行を編集したが、
編集をした項目を間違えていた。
default: &defaultをいじってしまっていたため
production:の方をしっかりと修正。
gitで編集前の記述も拾ってこれたので
再度修正し、無事にDB作成ができました!
以前はエラーにならなかったので
今回は新しい学びが多かったです。