🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

1回答

771閲覧

EC2デプロイ時のエラーが解決できない

ik_ko

総合スコア9

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2021/03/11 13:01

問題発生状況

railsでポートフォリオを概成し終え、EC2へcapistroへデプロイをしようとしたところエラーが発生しました。
データベースはmysqlです。

聞きたいこと

EC2 へ Capistrano でデプロイしたが、接続先が localhost になっているので RDS のホストアドレスに変更したいです。どこで localhost の設定がされているか分からず、変更できない状況です。

エラーログ

長いためgistの載せました
リンク内容
#試したこと、調べたこと
EC2 から RDS への接続は確認済み。

20210311070026]$ mysql -h エンドポイント -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2799 Server version: 8.0.21 Source distribution Copyright (c) 2000, 2021, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>

capistroは使わず、EC2上でrails db:migrateを実行してもエラー発生、local環境に接続してしまいエラー出る

20210311070026]$ bundle exec rake db:migrate RAILS_ENV=production rake aborted! Mysql2::Error::ConnectionError: Access denied for user 'root'@'localhost' (using password: NO) /var/www/sdf_app/shared/bundle/ruby/2.6.0/gems/mysql2-0.5.3/lib/mysql2/client.rb:90:in `connect' /var/www/sdf_app/shared/bundle/ruby/2.6.0/gems/mysql2-0.5.3/lib/mysql2/client.rb:90:in `initialize' /var/www/sdf_app/shared/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/connection_adapters/mysql2_adapter.rb:24:in `new' /var/www/sdf_app/shared/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/connection_adapters/mysql2_adapter.rb:24:in `mysql2_connection' /var/www/sdf_app/shared/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:887:in `new_connection' /var/www/sdf_app/shared/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:931:in `checkout_new_connection' /var/www/sdf_app/shared/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:910:in `try_to_checkout_new_connection' /var/www/sdf_app/shared/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:871:in `acquire_connection' /var/www/sdf_app/shared/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:593:in `checkout' /var/www/sdf_app/shared/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:437:in `connection' /var/www/sdf_app/shared/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:1119:in `retrieve_connection' /var/www/sdf_app/shared/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/connection_handling.rb:221:in `retrieve_connection' /var/www/sdf_app/shared/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/connection_handling.rb:189:in `connection' /var/www/sdf_app/shared/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/tasks/database_tasks.rb:238:in `migrate' /var/www/sdf_app/shared/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/railties/databases.rake:86:in `block (3 levels) in <main>' /var/www/sdf_app/shared/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/railties/databases.rake:84:in `each' /var/www/sdf_app/shared/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/railties/databases.rake:84:in `block (2 levels) in <main>' /var/www/sdf_app/shared/bundle/ruby/2.6.0/gems/rake-13.0.3/exe/rake:27:in `<top (required)>' /home/kosuke/.rbenv/versions/2.6.5/bin/bundle:23:in `load' /home/kosuke/.rbenv/versions/2.6.5/bin/bundle:23:in `<main>' Tasks: TOP => db:migrate (See full trace by running task with --trace) [kosuke@ip-10-0-0-55 20210311070026]$

database.yml 一部抜粋

production: adapter: mysql2 encoding: utf8mb4 pool: 5 database: sdf_app_production username: root password: <%= ENV['RDS_PASSWORD'] %> host: <%= ENV['RDS_ENDPOINT'] %> socket: /var/lib/mysql/mysql.sock

railsガイドには
ENV['DATABASE_URL'] が優先。その設定がなければ
config/database.yml の設定が読まれる。
とのことですが
herokuにデプロイする以降、ENV['DATABASE_URL']を設定していないためdatabase.ymlが読まれるはず。。。
わかる方いましたらコメント、ご回答よろしくお願いします!

railsguides.jp/configuring.html#%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yu_1985

2021/03/11 16:44

ENV['RDS_ENDPOINT'] はどこかで設定していますか?
winterboum

2021/03/11 22:45

解ではないとおもいますが socket: /var/lib/mysql/mysql.sock は余分です
ik_ko

2021/03/12 00:07

環境変数は .envファイルに記述しています。 gem 'dotenv-rails'はgroup :development, :test等のgroupのの中ではなく外に出して記述しているのでproductionでも昨日すると思うのですが...
ik_ko

2021/03/12 00:08

socketについては削除しておきます! ご指摘ありがとうございます!
yu_1985

2021/03/12 01:31

rails consoleで環境変数を確認したとき、ちゃんと想定通り設定されていますか? rails console -e production ENV['RDS_ENDPOINT']
ik_ko

2021/03/12 01:42

ご返答ありがとうございます! 確認いたしましたところ、本番環境でも取得することができました。 下記にも書いておりますがsocketを削除したところ以下のエラーについては解決できました。 Mysql2::Error::ConnectionError: Access denied for user 'root'@'localhost' (using password: NO) ですが違うエラーが出たのでyarnのバージョンの違いによるエラーが出たのでそちらの方をデバックしていこうと思います。 ご返答ありがとうございました!
guest

回答1

0

自己解決

database.ymlの記述から

socket: /var/lib/mysql/mysql.sock

上記をを削除したところデプロイ、エラーログ

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

が解決できました。
ですがまた違うエラーが出たのでそちらの方をデバックしたいと思います!

投稿2021/03/12 01:25

ik_ko

総合スコア9

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問