web-dev-qa-db-fra.com

Cloud9 postgres

J'essaie de configurer une base de données postgres dans une application Rails dans Cloud9. 

J'ai suivi les instructions ici: https://docs.c9.io/setting_up_postgresql.html et de configurer une base de données appelée cc_database.

Mon fichier database.yml ressemble à ceci: 

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

Quand j'exécute rake db: setup j'obtiens l'erreur suivante:

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

Je suis assez nouveau pour tout cela, alors tout conseil serait très apprécié.

16
jonny_FIVE

Effectuez les étapes suivantes:

  1. Créez un nouveau nom d'utilisateur et mot de passe pour postgresql sur cloud9:

    $ Sudo service postgresql start
    $ Sudo sudo -u postgres psql
    postgres=# CREATE USER username SUPERUSER PASSWORD 'password';
    postgres=# \q
    
  2. Créez des variables ENV sur cloud9:

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

    Mon database.yml pour Rails 4.2.0 sur 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. Inclure la gem pg dans Gemfile et installer:

    gemme 'pg', '~> 0.18.2'

    $ bundle install
    
  4. Mise à jour template1 postgresql pour database.yml sur cloud9:

    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. Depuis la ligne de commande:

    bundle exec rake db:create
    
37
Tony Nguyen

Le postgresql dans cloud9 est configuré pour s'authentifier avec peer lors de la connexion localhost. Ainsi, la résolution rapide consiste à changer l'utilisateur de votre database.yaml en utilisateur actuel. Dans mon cas, le nom d'utilisateur est Ubuntu. Pour voir votre utilisateur actuel, utilisez la commande

$ echo $USER

Donc, une liste de commande dans le terminal est.

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

Définissez votre fichier yaml comme ceci

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

Maintenant tu peux courir 

rake db:create
rake db:migrate
6
Carlos Eduardo

Comment configurer PostgreSQL & Rails sur Cloud9

Au moment de la rédaction, PostgreSQL est pré-installé dans Cloud9, vous n’avez donc pas besoin de l’installer vous-même. Cependant, il ne s'exécute pas par défaut et vous devrez donc le démarrer avec cette commande dans le terminal:

Sudo service postgresql start

Remplacez le mot de passe PostgreSQL par 'password' (ou choisissez un autre mot de passe):

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 

Editez votre config/database.yml pour être:

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'] %>

(Notez que les configurations template, username et password de la section default ci-dessus sont essentielles).

Ajoutez la gemme pg à votre Gemfile:

gem 'pg'

Exécutez bundle install.

Supprimez la gem sqlite de votre Gemfile (et éventuellement, supprimez les fichiers db/*.sqlite3).

Créez la base de données, chargez schema.rb et créez la base de données à l'aide de la tâche db:setup:

bundle exec rake db:setup

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

Démarrez ou redémarrez votre application Rails et vérifiez qu’elle fonctionne. 

Notez que les données non initiales de votre ancienne base de données sqlite ne seront pas présentes dans la nouvelle base de données.

Si vous souhaitez utiliser le client psql pour interagir directement avec PostgreSQL, exécutez psql ou bin/Rails db dans le terminal.

3
Eliot Sykes

Utilisez le nom d'utilisateur "Ubuntu" avec un mot de passe vide. Mon database.yml ressemble à ceci: 

développement:
adaptateur: postgresql
codage: unicode
base de données: myflix_development
piscine: 5
nom d'utilisateur: ubuntu
mot de passe: 

tester:
adaptateur: postgresql
codage: unicode
base de données: myflix_test
piscine: 5
nom d'utilisateur: ubuntu
mot de passe: 

S'il se plaint alors que le mot de passe est incorrect, essayez de le modifier en suivant les instructions de Cloud9:

Dans la ligne de commande, tapez: Sudo sudo -u postgres psql

postgres = # \password
Entrez le nouveau mot de passe: leave it blank and press enter
Entrez-le à nouveau: leave it blank and press enter
postgres = # \q 

Je suis assez nouveau pour ça. J'espère que ça marche!

3
user1991035

Trouvé la solution. Nécessaire pour éditer le fichier pg_hba.conf pour changer l'authentification d'homologue en md5 comme ceci:

local    postgres     postgres     md5

Il est difficile de trouver le fichier car il est uniquement accessible via le terminal dans cloud9. Vous ne pouvez pas le trouver dans l'arborescence de fichiers.

Si vous tapez ce qui suit dans postgres, il vous montrera l'emplacement

SHOW hba_file;

Vous pouvez ensuite rechercher et éditer in vim via le terminal.

1
jonny_FIVE

Une version courte lorsque vous avez l'application Rails avant de créer des bases de données:

ajouter la gemme 'pg' enlever la gemme sqlite3

$ bundle install
$ gem install pg

Ensuite, 

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

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

Changer myapp pour quelque nom que ce soit. Ensuite, copiez-collez ci-dessous, en changeant myapp pour n’importe quel nom. 

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

En tant que commentaires ci-dessus, aucun mot de passe n'est requis, nom d'utilisateur peut rester ubuntu. 

$rake db:migrate

Si vous utilisez heroku, vous n’avez pas besoin de la section production de database.yml

0
foureyedraven