質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.46%
Amazon RDS

Amazon RDSは、米アマゾン社が提供しているRDBMSサービス。クラウド上でのリレーショナルデータベースの構築および運用が可能です。MySQL/PostgreSQL/Oracle/SQL Serverのインストールを容易にすることができます。

Ruby on Rails 6

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

MySQL

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

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

Q&A

解決済

1回答

1405閲覧

EC2サーバー上でdb:migrateができません

Kahoo

総合スコア14

Amazon RDS

Amazon RDSは、米アマゾン社が提供しているRDBMSサービス。クラウド上でのリレーショナルデータベースの構築および運用が可能です。MySQL/PostgreSQL/Oracle/SQL Serverのインストールを容易にすることができます。

Ruby on Rails 6

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

MySQL

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

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

0グッド

0クリップ

投稿2021/08/07 05:15

編集2021/08/07 05:43

#起きているエラー
ローカルにて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に設定しました)

#環境

バージョン
Ruby3.0.0
Ruby on Rails6.1.3
MySQL8.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へのアクセスを許可してみましたが、結果は変わらずでした。
こちらを参考にしました。

トンチンカンなことばかり試しているような気がしますが、調べても他に方法が見つからず、困っております。

他に足りていない情報がありましたらご教示ください。
何かアドバイスいただけますと幸いです。よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

Access denied for user 'user'@'localhost' が気になります。
user 部分はあなたの login名で root では無いのですね?

そうしますと
username: <%= ENV['DATABASE_USERNAME'] %>
がうまく行っていません。
ここを
username: root
に、
場合によっては password: のところも直書きにして試してください。
それで通るようでしたら、環境変数の渡し方が失敗しています。

投稿2021/08/08 05:59

winterboum

総合スコア23416

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

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

Kahoo

2021/08/08 12:13

ご回答、ありがとうございます。 database.ymlを直書きしたところ、migrationが通りました。 おっしゃる通り、環境変数の問題で、 お恥ずかしながら本番環境の方で環境変数をおいた.envrcを読み込むのを失念しておりました。 source .envrcをしたところ読み込みでき、無事解決しました。 お力添えありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問