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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースの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

解決済

2回答

4278閲覧

本番環境で rails db:createできない

ckr

総合スコア23

Ruby on Rails 5

Ruby on Rails 5は、オープンソースの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クリップ

投稿2020/06/24 14:37

####状況
現在、AWS環境にて、railsで作成したアプリをデプロイしたく作業しているのですが、
本番環境でmysqlのデータベースが作成できず、止まっております。

mysqlはAWSのRDSにインストールしており、
EC2からRDSに接続する形で設定しております。

何かおわかりの方がいらっしゃいましたら、ヒントをいただけますと幸いです。

####エラー文

[ec2-user@ip-**** アプリのディレクトリ ]$ rails db:create RAILS_ENV=production Access denied for user 'rails'@'localhost' (using password: YES) Couldn't create 'アプリ名_production' database. Please check your configuration. rails aborted! Mysql2::Error: Access denied for user 'rails'@'localhost' (using password: YES) /var/アプリ名/rails/アプリ名/bin/rails:9:in `<top (required)>' /var/アプリ名/rails/アプリ名/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)

上記のエラーが発生しております。

RAILS_ENV=production DISABLE_DATABASE_ENVIRONMENT_CHECK=1 bundle exec rails db:drop

のコマンドで一度データベースをdropしようとしましたが、かわらず、エラーでした。

RAILS_ENV=production rails db:create

とRAILS_ENV=production の位置を変えても結果は変わらず
データベースが追加されていない様です。

mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | innodb | | mysql | | performance_schema | | sys | | tmp | +--------------------+ 6 rows in set (0.00 sec)
mysql> SELECT User, Host FROM mysql.user; +-----------+-----------+ | User | Host | +-----------+-----------+ | root | % | | mysql.sys | localhost | | rails | localhost | | rdsadmin | localhost | +-----------+-----------+ 4 rows in set (0.01 sec)

mysqlのユーザーについては、元々rootユーザーだったのですが、
新たにrailsという名前のユーザーを作成し、このユーザーに権限を与えています。

database.yml default: &default adapter: mysql2 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> username: rails password: (パスワードを記載しています) host: localhost development: <<: *default database: アプリ名_development username: rails password: (パスワードを記載しています) # Warning: The database defined as "test" will be erased and # re-generated from your development database when you run "rake". # Do not set this db to the same as development or production. test: <<: *default database: アプリ名_test username: rails password: (パスワードを記載しています) production: <<: *default database: アプリ名_production username: rails password: (パスワードを記載しています)

念のためローカル環境でのデータベースを確認したのですが、
ローカルではmysqlが反映されている様でした。

mysql> SHOW DATABASES; +--------------------------+ | Database | +--------------------------+ | information_schema | | アプリ名 | | アプリ名_development | | アプリ名_test | | mysql | | performance_schema | | sys | +--------------------------+ 7 rows in set (0.03 sec)

追加で記載すべき情報がございましたら、指示いただけますと幸いです。
何卒宜しくお願い致します。

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

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

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

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

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

guest

回答2

0

ベストアンサー

mysqlのユーザーについては、元々rootユーザーだったのですが、

新たにrailsという名前のユーザーを作成し、このユーザーに権限を与えています。

root の場合はできていたということでしょうか?


mysqlはAWSのRDSにインストールしており、

EC2からRDSに接続する形で設定しております。

default: &default

adapter: mysql2
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: rails
password: (パスワードを記載しています)
host: localhost

production:

<<: *default
database: アプリ名_production
username: rails
password: (パスワードを記載しています)

(正確にはEC2からRDSの入っているmysqlにログインする際には、mysql -h [DBインスタンスのエンドポイント] -u [ユーザー名] -pでログインしているのですが、このログイン自体は問題なさそうです。)

mysqlコマンドからは、 [DBインスタンスのエンドポイント] に接続されていますが、Rails のデータベース設定ファイルでは、 host: localhost となっているようですが、接続先が間違っていませんか?

host: DBインスタンスのエンドポイント でないと接続できないのでは?

投稿2020/06/25 01:34

編集2020/06/25 01:35
CHERRY

総合スコア25171

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

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

ckr

2020/06/25 14:23

ご返信いただき、ありがとうございました。 まさにご指摘頂いた箇所を修正したところ、rails db:create 、rails db:migrateが問題なくできることが確認できました。 ご回答いただき、大変助かりました、ありがとうございます!
guest

0

RDSでの運用経験はありませんが、以前、EC2にmysqlをインストールした時に行っていたこととしては、以下の2点です。

・パスワードを設定する
設定したパスワードでmysqlにログインできますか?
・railsユーザーに権限を付与する
grant all on . to rails@'localhost'; を実行する

対応済みでしたらスルーしてください。
参考になれば嬉しいです。

投稿2020/06/24 16:26

編集2020/06/24 16:27
Cojiro

総合スコア539

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

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

ckr

2020/06/25 00:11

ご返信いただきありがとうございます! ご回答頂いた2点、パスワードを設定する点と権限を付与する点については どちらも実行できている状況です。 (正確にはEC2からRDSの入っているmysqlにログインする際には、mysql -h [DBインスタンスのエンドポイント] -u [ユーザー名] -pでログインしているのですが、このログイン自体は問題なさそうです。)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問