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

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

詳細はこちら
Ruby on Rails 6

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

MySQL

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

AWS(Amazon Web Services)

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

Q&A

1回答

1518閲覧

AWSでrailsアプリのデプロイ時にrake db:create RAILS_ENV=productionができない

kanou-shimon

総合スコア6

Ruby on Rails 6

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

MySQL

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

AWS(Amazon Web Services)

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

0グッド

0クリップ

投稿2021/01/05 13:12

編集2021/01/05 14:09

AWSでrailsアプリのデプロイ時にrake db:create RAILS_ENV=productionができません。
こちらのサイトをお手本に行い、データベースはmysql2を使用しています。(RDSは使用していません。)
https://qiita.com/naoki_mochizuki/items/5a1757d222806cbe0cd1#comments
どなたか分かる方いらっしゃいますでしょうか。
後一歩のところでデプロイできず、時間をかけても解決できないので何卒よろしくお願いいたします。

以下エラー文になります。

$rake db:create RAILS_ENV=production Access denied for user 'root'@'localhost' (using password: YES) Couldn't create 'zimotoai_app_production' database. Please check your configuration. rake aborted! Mysql2::Error::ConnectionError: Access denied for user 'root'@'localhost' (using password: YES) Tasks: TOP => db:create (See full trace by running task with --trace)
database.yml default: &default adapter: sqlite3 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> timeout: 5000 development: <<: *default database: db/development.sqlite3 test: <<: *default database: db/test.sqlite3 production: adapter: mysql2 encoding: utf8 pool: 5 database: zimotoai_app_production username: root password: 決定したパスワード host: localhost

疑問

Please check your configuration.の configurationはどこを見ればいいのか?

試したこと

1ローカル環境でmysqlのパスワードを変更(以下の記事を参考に)
https://qiita.com/fukumon/items/69c541cd5c87d77465b2

追記

お手本としたサイトの方法
https://qiita.com/naoki_mochizuki/items/5a1757d222806cbe0cd1
MySQLの設定
[naoki|protospace]$ vi config/database.yml

production: <<: *default database: mumu_production username: root ここをrootに変更する   password: ここを空欄にする

[naoki|mumu]$ sudo service mysqld start mysqldの起動
[naoki|mumu]$ ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
[naoki|mumu]$ rake db:create RAILS_ENV=production
[naoki|mumu]$ rake db:migrate RAILS_ENV=production

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

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

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

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

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

guest

回答1

0

Access denied for user 'root'@'localhost' (using password: YES)

なので、DBの認証で拒否されています。

まず、database.ymlに設定しているユーザとパスワードで実際にアクセスできるか確認してください。
あと、defaultでadapterをsqlite3と定義しているところで、productionでは更にmysql2と定義してますけど、これらの設定は両方同時に存在して大丈夫なんでしょうか?

また、そもそもですができれば安易にrootを使わずに専用のユーザを作ってください。
この記事の意図はとりあえず動くところまでだと思うので一旦はそれでもいいですけど。

$rake db:create

ちなみにこの辺を見ると、どの環境で実行しようとしているか気になるのですが、自分のローカル端末ですか?
AWSのタグをつけているのでEC2でやってるのかと思いましたが…。

投稿2021/01/05 13:38

yu_1985

総合スコア7588

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

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

kanou-shimon

2021/01/05 14:07

ご回答ありがとうございます。 database.ymlに設定しているユーザとパスワードで実際にアクセスできるか確認してください。 →こちらは、mysqlにアクセスできるか?ということでよろしいでしょうか。その場合、アクセスできました。 defaultでadapterをsqlite3と定義しているところで、productionでは更にmysql2と定義してますけど、これらの設定は両方同時に存在して大丈夫なんでしょうか? →初心者でわかっていないところなのですが、開発の際はtest, developmentはsqlite, productionはpostgreSQLを想定していました。 しかし、多くの記事がrailsアプリのデプロイの際にmysqlを使用していることから、見様見真似でproductionだけはmysqlにしてみました。 書き方がやDB作成の際の基本が間違っていたらご指摘いただけますでしょうか。 そもそもですができれば安易にrootを使わずに専用のユーザを作ってください。 →ご指摘の通りだと思いますので、以後その様にいたします。 どの環境で実行しようとしているか気になるのですが、自分のローカル端末ですか? →EC2で作成したインスタンスにログインして作業しています。 お手本としていたサイトに、追記の様に書いてあったので、こちらをEC2インスタンス内で実行しました。 これは、おかしいことなのでしょうか。 よく理解できておらず、申し訳ないのですが、何卒よろしくお願いいたします。
yu_1985

2021/01/05 17:20

> こちらは、mysqlにアクセスできるか?ということでよろしいでしょうか。その場合、アクセスできました。 パスワードに記号が混ざったりしてませんか?ダブルクォートで囲ったらどうなりますか? 自分で試してないので実際には問題ないのかどうかがわかりませんが、defaultに記載しているものは他の環境の設定全てで引用しているので、環境ごとに設定を変えたいなら各環境ごとの設定のところに記載すべきでは、と思います。 エラーの内容を見るとMySQL2 adapterを使っているようには見えますが…。 > お手本としていたサイトに、追記の様に書いてあったので、こちらをEC2インスタンス内で実行しました。 問題ないですが、記載がわかりにくいです。 > 1ローカル環境でmysqlのパスワードを変更(以下の記事を参考に) と書いてあるので、果たしてどの環境を指しているのかと思って念の為の確認です。 ローカルが自分の端末上7日、EC2インスタンス上なのかわかるように書いたほうがいいでしょう。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問