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

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

新規登録して質問してみよう
ただいま回答率
85.35%
PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Ruby on Rails

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

Amazon EC2

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

Q&A

解決済

1回答

1038閲覧

【EC2】Postgresqlの接続エラー

NEMOTOSHOTA

総合スコア32

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Ruby on Rails

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

Amazon EC2

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

0グッド

0クリップ

投稿2020/05/03 13:24

編集2020/05/03 14:28

したいこと
EC2にデプロイしたアプリ上でrake db:create RAILS_ENV=productionをしたい。

RDSを使わない形でec2の本番環境にデプロイをしようと思っています。

rake db:create RAILS_ENV=productionをしたところ、以下のエラーが表示されました。

[shogo@ip-10-0-0-193 Portfolio]$ rake db:create RAILS_ENV=production /home/shogo/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/bundler/gems/bootstrap-rubygem-ef343b781ca1/lib/bootstrap/version.rb:4: warning: already initialized constant Bootstrap::VERSION /home/shogo/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/bootstrap-sass-3.4.1/lib/bootstrap-sass/version.rb:2: warning: previous definition of VERSION was here /home/shogo/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/bundler/gems/bootstrap-rubygem-ef343b781ca1/lib/bootstrap/version.rb:5: warning: already initialized constant Bootstrap::BOOTSTRAP_SHA /home/shogo/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/bootstrap-sass-3.4.1/lib/bootstrap-sass/version.rb:3: warning: previous definition of BOOTSTRAP_SHA was here FATAL: pg_hba.conf ????"127.0.0.1"????"postgres"???????"postgres, SSL?????????????? Couldn't create 'portfolio' database. Please check your configuration. rake aborted! ActiveRecord::NoDatabaseError: FATAL: pg_hba.conf ????"127.0.0.1"????"postgres"???????"postgres, SSL?????????????? Caused by: PG::ConnectionBad: FATAL: pg_hba.conf ????"127.0.0.1"????"postgres"???????"postgres, SSL?????????????? Tasks: TOP => db:create (See full trace by running task with --trace) [shogo@ip-10-0-0-193 Portfolio]$

###考察
pg_hba.confファイルの設定方法が悪いと思うのですが、どの設定方法が正しいのかわかりません。

こちらの記事を参考に作業をしていました。
https://note.com/agw/n/nd98194bf135d

sudo nano /var/lib/pgsql/data/pg_hba.confは以下の通りです。

# TYPE DATABASE USER ADDRESS METHOD # "local" is for Unix domain socket connections only local all all trust # IPv4 local connections: # host all all 127.0.0.1/32 ident host all all 192.168.0.0/16 password # IPv6 local connections: host all all ::1/128 ident # Allow replication connections from localhost, by a user with the # replication privilege. #local replication postgres peer #host replication postgres 127.0.0.1/32 ident #host replication postgres ::1/128 ident

アドバイスでも良いのでどなたかわかる方がいればアドバイスをお願いします。

追記
config/databse.yml

default: &default adapter: postgresql encoding: unicode username: ユーザー名 password: パスワード # ご自身のpostgresqlに登録してあるユーザ名にしてください。 # username: <%= ENV.fetch('POSTGRES_USER', 'ユーザ名') %> # password: <%= ENV.fetch('POSTGRES_PASSWORD', 'パスワード') %> # docker-composeのPOSTGRES_PASSWORDと揃える。 pool: 5 host: <%= ENV.fetch('DATABASE_HOST', 'localhost') %> # docker-composeのサービス名にする。 port: <%= ENV.fetch('DATABASE_PORT') { 5432 } %> development: <<: *default database: portfolio_development test: <<: *default database: portfolio_test production: <<: *default database: portfolio

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

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

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

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

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

Yasumichi

2020/05/03 13:51

config/database.yml の production の設定を開示していただけますか? エラーから推測すると pg_hba.conf の次の行を修正すれば良い気もしますが。 # host all all 127.0.0.1/32 ident
NEMOTOSHOTA

2020/05/03 14:27 編集

Yasumichiさん コメントありがとうございます。 config/databse.ymlになります。 default: &default adapter: postgresql encoding: unicode username: ユーザー名 password: パスワード # ご自身のpostgresqlに登録してあるユーザ名にしてください。 # username: <%= ENV.fetch('POSTGRES_USER', 'ユーザ名') %> # password: <%= ENV.fetch('POSTGRES_PASSWORD', 'パスワード') %> # docker-composeのPOSTGRES_PASSWORDと揃える。 pool: 5 host: <%= ENV.fetch('DATABASE_HOST', 'localhost') %> # docker-composeのサービス名にする。 port: <%= ENV.fetch('DATABASE_PORT') { 5432 } %> development: <<: *default database: portfolio_development test: <<: *default database: portfolio_test production: <<: *default database: portfolio
NEMOTOSHOTA

2020/05/03 13:56

下記の部分をどのような形に修正するのでしょうか? # host all all 127.0.0.1/32 ident
guest

回答1

0

ベストアンサー

config/databse.yml にて 'DATABASE_HOST', 'localhost' となっているようですので、

# host all all 127.0.0.1/32 ident

host all all 127.0.0.1/32 password

に変更してみてはいかがでしょう。

投稿2020/05/03 14:01

編集2020/05/03 15:09
Yasumichi

総合スコア1773

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

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

NEMOTOSHOTA

2020/05/03 14:11

下記のように入力をして、 # TYPE DATABASE USER ADDRESS METHOD # "local" is for Unix domain socket connections only local all all trust # IPv4 local connections: host all all 127.0.0.1/32 password #host all all 192.168.0.0/16 password # IPv6 local connections: host all all ::1/128 ident postgresqlを再起動してrake db:create RAILS_ENV=productionをしましたが、以下のエラーが表示されました。 FATAL: ???"postgres"??????????????? Couldn't create 'portfolio' database. Please check your configuration. rake aborted! ActiveRecord::NoDatabaseError: FATAL: ???"postgres"??????????????? ただエラー内容は変わったようです。
Yasumichi

2020/05/03 14:27 編集

config/databse.yml を重要なところはぼかして、質問部分に追記で張ってもらえますか? あと、その環境で psql とかつかって、databse.yml に設定されているユーザーとパスワードで普通には入れますか?さらに create database はできますか? 【追記】 一部文字化けしてるのが気になります。Amazon EC2 には詳しくないので以下の質問が的を得ているか分かりませんが。 1 使ってる端末エミュレーターの文字コードの設定はあってますか? 2 接続先の locale は日本語を扱える locale になっていますか?
NEMOTOSHOTA

2020/05/03 14:49

config/database.ymlを追記しました。 ・psql -U postgres -d postgresを入力するとdatabase.ymlファイルに記載しているユーザ名、パスワードで入れました。 ・CREATE DATABASE hoge;でデータベースを作ることができました。 文字化けの部分ついて、現在対処しています。
Yasumichi

2020/05/03 15:00

エラーメッセージに PG::ConnectionBad が出なくなったという認識でよろしいでしょうか? Caused By の部分がどうなったかなと思いまして。
NEMOTOSHOTA

2020/05/03 15:02

なるほど、下記のようにPG::ConnectionBadは出ている状態です。 [shogo@ip-10-0-0-193 Portfolio]$ rake db:create RAILS_ENV=production /home/shogo/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/bundler/gems/bootstrap-rubygem-ef343b781ca1/lib/bootstrap/version.rb:4: warning: already initialized constant Bootstrap::VERSION /home/shogo/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/bootstrap-sass-3.4.1/lib/bootstrap-sass/version.rb:2: warning: previous definition of VERSION was here /home/shogo/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/bundler/gems/bootstrap-rubygem-ef343b781ca1/lib/bootstrap/version.rb:5: warning: already initialized constant Bootstrap::BOOTSTRAP_SHA /home/shogo/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/bootstrap-sass-3.4.1/lib/bootstrap-sass/version.rb:3: warning: previous definition of BOOTSTRAP_SHA was here FATAL: ???"postgres"??????????????? Couldn't create 'portfolio' database. Please check your configuration. rake aborted! ActiveRecord::NoDatabaseError: FATAL: ???"postgres"??????????????? Caused by: PG::ConnectionBad: FATAL: ???"postgres"??????????????? Tasks: TOP => db:create (See full trace by running task with --trace) [shogo@ip-10-0-0-193 Portfolio]$
NEMOTOSHOTA

2020/05/03 15:03

文字化けについて対応しているのですが、まだ直りません。
Yasumichi

2020/05/03 15:12 編集

psql に以下のオプションを追加しても入れますか? -h localhost -p 5432 -W -h でホスト名指定 -p でポート指定 -W でパスワードの入力を促す
NEMOTOSHOTA

2020/05/03 15:14

psql -U postgres -d postgres -h localhost -p 5432 -Wと入力したところ、入れないようです。 ----------------------------------------------------------------------------- [shogo@ip-10-0-0-193 Portfolio]$ psql -U postgres -d postgres -h localhost -p 5432 -W ユーザ postgres のパスワード: psql: FATAL: ???"postgres"??????????????? [shogo@ip-10-0-0-193 Portfolio]$ ------------------------------------------------------------------
Yasumichi

2020/05/03 15:20 編集

小出しで申し訳ありません。 localhost を 127.0.0.1 に変えたらどうなるか、そもそもパスワードが合ってるかも確認してみてください。 【追記】 あと、ホスト名を指定しない場合に -W 付けたらどうなるかも試してみてください。
NEMOTOSHOTA

2020/05/03 15:20

いえ、アドバイスをいただけるだけでありがたいです。試してみます。 database.ymlのlocalhostを127.0.0.1に変えるということでしょうか?
Yasumichi

2020/05/03 15:23

まずは、psql の方でやってみてください。
NEMOTOSHOTA

2020/05/03 15:37

psql -U postgres で入り、下記のようにパスワードを変えたら127.0.0.1、localhostでも入れました。 ----------------------------------------------------------------------------- [shogo@ip-10-0-0-193 Portfolio]$ psql -U postgres psql (9.2.24) "help" でヘルプを表示します. postgres=# ALTER ROLE postgres WITH PASSWORD 'aaaa'; ALTER ROLE postgres=# \q [shogo@ip-10-0-0-193 Portfolio]$ psql -U postgres -d postgres -h 127.0.0.1 -p 5432 -W ユーザ postgres のパスワード: psql (9.2.24) "help" でヘルプを表示します. postgres=# \q [shogo@ip-10-0-0-193 Portfolio]$ psql -U postgres -d postgres -h localhost -p 5432 -W ユーザ postgres のパスワード: psql (9.2.24) "help" でヘルプを表示します. postgres=# ----------------------------------------------------------------------------- 下記のようにホスト名を指定しないコマンドを入力したら、入ることができました。 ----------------------------------------------------------------------------- [shogo@ip-10-0-0-193 Portfolio]$ psql -U postgres -d postgres -p 5432 -W ユーザ postgres のパスワード: psql (9.2.24) "help" でヘルプを表示します. postgres=# -----------------------------------------------------------------------------
Yasumichi

2020/05/03 15:43

あとは、config/databse.yml のパスワードを変更してみてください。 なお、最終的には、アプリ専用のユーザーを用意した方が良いと思います。 また、pg_hba.conf で password としましたが、平文での送信になりますので md5 とか違う種別も検討した方が良いかもしれません。 pg_hba.confファイルの設定方法 | PostgreSQLの使い方 https://www.dbonline.jp/postgresql/ini/index2.html この辺は、そこまで詳しくないのでこれが良いとは言い切れませんが。
NEMOTOSHOTA

2020/05/03 16:06 編集

config/databse.yml のパスワードを最新の者に変更し、rake db:create RAILS_ENV=productionをしたところ次のエラーが表示されました。 エラーが変わり、バージョンのエラーに変わりましたので接続周りは解消された?と思います。 夜遅くまでありがとうございました。 感謝いたします。 ------------------------------------------------------------ [shogo@ip-10-0-0-193 Portfolio]$ vi config/database.yml [shogo@ip-10-0-0-193 Portfolio]$ rake db:create RAILS_ENV=production /home/shogo/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/bundler/gems/bootstrap-rubygem-ef343b781ca1/lib/bootstrap/version.rb:4: warning: already initialized constant Bootstrap::VERSION /home/shogo/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/bootstrap-sass-3.4.1/lib/bootstrap-sass/version.rb:2: warning: previous definition of VERSION was here /home/shogo/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/bundler/gems/bootstrap-rubygem-ef343b781ca1/lib/bootstrap/version.rb:5: warning: already initialized constant Bootstrap::BOOTSTRAP_SHA /home/shogo/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/bootstrap-sass-3.4.1/lib/bootstrap-sass/version.rb:3: warning: previous definition of BOOTSTRAP_SHA was here Your version of PostgreSQL (90224) is too old. Active Record supports PostgreSQL >= 9.3. Couldn't create 'portfolio' database. Please check your configuration. rake aborted! Your version of PostgreSQL (90224) is too old. Active Record supports PostgreSQL >= 9.3. Tasks: TOP => db:create (See full trace by running task with --trace) [shogo@ip-10-0-0-193 Portfolio]$ ------------------------------------------------------------
NEMOTOSHOTA

2020/05/05 10:49 編集

こちら作業をしていたのですが、rake db:create RAILS_ENV=productionをしたところpgsqlのバージョンが古いと言われ、pgsqlのバージョンを上げました。 そして再び同じ作業をしてrake db:create RAILS_ENV=productionをしたところ再びエラーが表示されてしまいました。 今回はpsql -U postgresでも入ることができません。 よろしければ再び知見を貸していただけますでしょうか? https://teratail.com/questions/259057?modal=q-comp
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問