#起きているエラー
ローカルにてRailsを使ったWebアプリを作成し、AWS上にあげようとしています。
主にこちらの記事を参考に作業を進め、EC2インスタンスとRDSインスタンスを作成、
ローカルのターミナルからEC2サーバーにSSH接続し、そこからmysqlに接続できることも確認しています。
GitHubからアプリをクローンし、unicornとnginxの設定をして、
rake db:create RAILS_ENV=production
したところで、
Mysql2::Error::ConnectionError: Access denied for user 'user'@'localhost' (using password: NO)
というエラーが出て解決できないでおります。
(※user
のところは私の名前で、サーバーに接続したりmysqlのユーザーとしても登録している名前です)
EC2サーバーからアクセスしているのに'user'@'localhost'
となっていて、
そこの設定がおかしいのだと思うのですが、なぜそうなっているのかがわかりません。
(RDSのユーザー名はrootに設定しました)
#環境
バージョン | |
---|---|
Ruby | 3.0.0 |
Ruby on Rails | 6.1.3 |
MySQL | 8.0 |
#試したこと
###database.ymlの確認
myapp/config/fatabase.yml
yml
1default: &default 2 adapter: mysql2 3 encoding: utf8mb4 4 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> 5 username: <%= ENV['DATABASE_USERNAME'] %> 6 password: <%= ENV['DATABASE_PASSWORD'] %> 7 socket: /tmp/mysql.sock 8 9development: 10 <<: *default 11 database: myapp_development 12 13test: 14 <<: *default 15 database: myapp_test 16 17production: 18 <<: *default 19 adapter: mysql2 20 encoding: utf8 21 database: myapp_production 22 username: <%= ENV['MYAPP_DATABASE_USERNAME'] %> 23 password: <%= ENV['MYAPP_DATABASE_PASSWORD'] %> 24 host: <%= ENV['MYAPP_DATABASE_HOST'] %>
myapp/.envrc ※下記パスワードは実際のものとは異なります
export DATABASE_USERNAME=root export DATABASE_PASSWORD=password(ローカルで設定したもの) export MYAPP_DATABASE_USERNAME=root(RDSのユーザー名) export MYAPP_DATABASE_PASSWORD=password(RDSで設定したもの) export MYAPP_DATABASE_HOST=RDSのエンドポイント
ローカルではdirenvを使っていたので、サーバー上にも.envrc
を作成し、同じ内容で変数を定義し直しています。
こちらに入っているユーザー名とパスワードでサーバー上からのMySQLへの接続は
mysql -h エンドポイント -u root -p
で、できています。
.envrcの読み込みがうまく行っていないとかと思い、
こちらにならって、ccredentials.yml.enc
に記載する方法も試しましたが結果は変わらずでした。
###MySQLのユーザーを作成して権限を付与
試しに、EC2サーバーからMySQLに接続して、エラーが出ていたuser
と同じ名前のユーザーを作成、
myapp_production
へのアクセスを許可してみましたが、結果は変わらずでした。
※こちらを参考にしました。
トンチンカンなことばかり試しているような気がしますが、調べても他に方法が見つからず、困っております。
他に足りていない情報がありましたらご教示ください。
何かアドバイスいただけますと幸いです。よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/08/08 12:13