web-dev-qa-db-ja.com

Cloud9 postgres

Cloud9のRailsアプリでpostgresデータベースをセットアップしようとしています。

私はここの指示に従いました: https://docs.c9.io/setting_up_postgresql.html そしてcc_databaseと呼ばれるデータベースをセットアップします。

私のdatabase.ymlファイルは次のようになります:

development:
  adapter: postgresql
  encoding: SQL_ASCII
  database: cc_database
  pool: 5
  username: postgres
  password: password

Rake db:setupを実行すると、次のエラーが発生します。

 PG::ConnectionBad: FATAL:  Peer authentication failed for user "postgres"

私はこれらすべてにまったく慣れていないので、アドバイスをいただければ幸いです。

16
jonny_FIVE

次の手順を実行します。

  1. Cloud9でpostgresqlの新しいユーザー名とパスワードを作成します。

    $ Sudo service postgresql start
    $ Sudo sudo -u postgres psql
    postgres=# CREATE USER username SUPERUSER PASSWORD 'password';
    postgres=# \q
    
  2. Cloud9でENV変数を作成します。

    $ echo "export USERNAME=username" >> ~/.profile
    $ echo "export PASSWORD=password" >> ~/.profile
    $ source ~/.profile
    

    私のdatabase.ymlfor Rails 4.2.0 on cloud9:

    default: &default
      adapter: postgresql
      encoding: unicode
      pool: 5
      username: <%= ENV['USERNAME'] %>
      password: <%= ENV['PASSWORD'] %>
      Host:     <%= ENV['IP'] %>
    
    development:
      <<: *default
      database: sample_app_development
    
    test:
      <<: *default
      database: sample_app_test
    
    production:
      <<: *default
      database: sample_app_production
    
  3. Gem pgをGemfileに含めてインストールします。

    gem'pg '、'〜> 0.18.2 '

    $ bundle install
    
  4. 更新template1 cloud9上のdatabase.ymlのpostgresql:

    postgres=# UPDATE pg_database SET datistemplate = FALSE WHERE datname = 'template1';
    postgres=# DROP DATABASE template1;
    postgres=# CREATE DATABASE template1 WITH TEMPLATE = template0 ENCODING = 'UNICODE';
    postgres=# UPDATE pg_database SET datistemplate = TRUE WHERE datname = 'template1';
    postgres=# \c template1
    postgres=# VACUUM FREEZE;
    postgres=# \q
    
  5. コマンドラインから実行:

    bundle exec rake db:create
    
37
Tony Nguyen

Cloud9のpostgresqlは、ローカルホスト接続時にピアで認証するように設定されています。したがって、迅速な解決策は、database.yamlのユーザーを現在のユーザーに変更することです。私の場合、ユーザーの名前はubuntuです。現在のユーザーを表示するには、コマンドを使用します

$ echo $USER

したがって、ターミナルのコマンドのリストはです。

$ Sudo su - postgres
$ createuser ubuntu -dslP
$ Enter password for new role: **same password from your yaml file**
$ Enter it again:

Yamlファイルを次のように設定します

development:
  adapter: postgresql
  encoding: SQL_ASCII
  database: cc_database
  pool: 5
  username: ubuntu
  password: password

今、あなたは走ることができます

rake db:create
rake db:migrate
6
Carlos Eduardo

Cloud9でPostgreSQLをセットアップする方法&Rails

執筆時点では、Cloud9にはPostgreSQLがプリインストールされているため、自分でインストールする必要はありません。ただし、デフォルトでは実行されないため、ターミナルで次のコマンドを使用して起動する必要があります。

Sudo service postgresql start

PostgreSQLのパスワードを「password」に変更します(または別のパスワードを選択します)。

Sudo sudo -u postgres psql

# This will open the psql client.

# Type \password and press enter to begin process
# of changing the password:
postgres=# \password

# Type your new password (e.g. "password") and press enter twice:
Enter new password: 
Enter it again: 

# Password changed, quit psql with \q
postgres=# \q 

config/database.ymlを次のように編集します。

default: &default
  adapter: postgresql
  encoding: unicode
  pool: 5

  # Important configs for cloud9, change password value
  # to what you entered in the previous psql step.
  template: template0
  username: ubuntu
  password: password

development:
  <<: *default
  database: your_app_name_development

test:
  <<: *default
  database: your_app_name_test

production:
  <<: *default
  database: your_app_name_production
  username: your_app_name
  password: <%= ENV['YOUR_APP_NAME_DATABASE_PASSWORD'] %>

(上記のtemplateセクションのusernamepassword、およびdefault構成は必須であることに注意してください)。

pggemをGemfileに追加します。

gem 'pg'

bundle installを実行します。

Gemfileからsqlitegemを削除します(オプションでdb/*.sqlite3ファイルを削除します)。

データベースを作成し、schema.rbをロードし、db:setupタスクを使用してデータベースをシードします。

bundle exec rake db:setup

# Run bin/rake -AD db to see all db-related tasks

Railsアプリを起動または再起動して、機能していることを確認します。

古いsqliteデータベースの非シードデータは新しいデータベースには存在しないことに注意してください。

Psqlクライアントを使用してPostgreSQLと直接対話する場合は、ターミナルでpsqlを実行するかbin/Rails dbを実行します。

3
Eliot Sykes

ユーザー名「ubuntu」を空白のパスワードとともに使用します。私のdatabase.ymlは次のようになります:

開発:
アダプター:postgresql
エンコーディング:ユニコード
データベース:myflix_development
プール:5
ユーザー名:ubuntu
パスワード:

テスト:
アダプター:postgresql
エンコーディング:ユニコード
データベース:myflix_test
プール:5
ユーザー名:ubuntu
パスワード:

その後、パスワードが間違っていると文句を言う場合は、Cloud9の手順を使用してパスワードを変更してみてください。

コマンドラインで、次のように入力します。Sudo sudo -u postgres psql

postgres =#\password
新しいパスワードを入力してください: leave it blank and press enter
もう一度入力してください:leave it blank and press enter
postgres =#\q

私はこれにかなり慣れていません。それがうまくいくことを願っています!

3
user1991035

私にとっては、 Cloud9ワークスペースをRails and Postgresql でセットアップするだけでは不十分でした。ユーザーには渡されましたが、パスワードは渡されませんでした。echo $USERNAME何も思いつかなかった。

解決

$ Sudo su - postgres
$ createuser ubuntu -dslP

それから私はこれをしました:

Sudo sudo -u postgres psql
postgres=# \password
Enter new password: entered a real password
Enter it again: entered it again
postgres=# \q

次に、yamlファイルでこれを行いました(ホスト部分を強制終了したことに注意してください):

development:
  adapter: postgresql
  encoding: unicode
  database: my_database_name
  pool: 5
  username: ubuntu
  password: actual_password

次に、次のコマンドを使用してデータベースを作成できました。

rake db:create

そして、私のRailsサーバーは、これ以上問題なく起動しました。

解決策を見つけました。次のように、認証をピアからmd5に変更するには、pg_hba.confファイルを編集する必要があります。

local    postgres     postgres     md5

Cloud9の端末からしかアクセスできないため、ファイルを見つけるのは困難です。ファイルツリーに見つかりません。

Postgresに次のように入力すると、場所が表示されます

SHOW hba_file;

その後、ターミナルを介してvimで検索および編集できます。

1
jonny_FIVE

データベースを作成する前にRailsアプリがある場合の短いバージョン:

gem'pg 'を追加しますgemsqlite3を削除します

$ bundle install
$ gem install pg

次に、

$Sudo service postgresql start
$psql -c "create database myapp_development owner=ubuntu"

https://community.c9.io/t/how-do-i-set-up-postgresql-on-c9-for-my-Rails-app/2614/4

Myappを任意の名前に変更します。次に、以下をコピーして貼り付け、myappを任意の名前に変更します。

/myapp/config/database.yml
    development:
      adapter: postgresql
      encoding: unicode
      database: myapp_development
      pool: 5
      username: ubuntu
      password:
      timeout: 5000

上記のコメントのように、パスワードは必要ありません。ユーザー名はubuntuのままです。

$rake db:migrate

Herokuを使用している場合は、database.ymlの本番セクションは必要ありません。

0
foureyedraven