Постгрес Cloud9

Я пытаюсь настроить базу данных postgres в приложении Rails в Cloud9.

Я следовал приведенным здесь инструкциям: https://docs.c9.io/setting_up_postgresql.html и настроил базу данных с именем cc_база данных.

Мой файл 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"

Я совершенно новичок во всем этом, поэтому любые советы будут высоко оценены.


person jonny_FIVE    schedule 24.10.2014    source источник
comment
у вас есть доступ к оболочке вашего сервера с9?   -  person davegson    schedule 24.10.2014
comment
и попробуйте добавить блок для вашей производственной среды в ваш database.yml   -  person davegson    schedule 24.10.2014


Ответы (7)


Выполните следующие действия:

  1. Создайте новое имя пользователя и пароль для postgresql в облаке9:

    $ sudo service postgresql start
    $ sudo sudo -u postgres psql
    postgres=# CREATE USER username SUPERUSER PASSWORD 'password';
    postgres=# \q
    
  2. Создайте переменные ENV в облаке9:

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

    Моя база данных.yml для рельсов 4.2.0 в облаке9:

    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. #P5# <блочная цитата> #P6#
    $ bundle install
    
  4. Обновите template1 postgresql для database.yml в облаке9:

    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
    
person Tony Nguyen    schedule 30.12.2014
comment
попытка заставить подтяжки ботов работать с postgres и c9.io в сентябре 2015 года - я могу подтвердить, что это решение работает - person Huw; 21.09.2015
comment
СПАСИБО - я понятия не имею, как бы я понял это без вашего шага за шагом - person Steven Moffat; 24.03.2016

Postgresql в cloud9 настроен на аутентификацию с одноранговым узлом при подключении к локальному хосту. Таким образом, быстрое решение - изменить пользователя в вашей базе данных.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
person Carlos Eduardo    schedule 31.03.2015
comment
@carlos, это решение сработало для меня. Кстати, вы знаете, как войти в psql, используя пользователя ubuntu таким образом? - person Matthias; 25.02.2016
comment
@ Матиас, я думаю, что psql -h localhost -U ubuntu -W - person Carlos Eduardo; 13.03.2016

Используйте имя пользователя «ubuntu» с пустым паролем. Моя база данных.yml выглядит так:

разработка:
адаптер: postgresql
кодировка: unicode
база данных: myflix_development
пул: 5
имя пользователя: ubuntu
пароль:

test:
адаптер: postgresql
кодировка: unicode
база данных: 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

Я новичок в этом. Надеюсь, это работает!

person user1991035    schedule 14.05.2015

Как настроить PostgreSQL и Rails в Cloud9

На момент написания статьи в Cloud9 был предустановлен PostgreSQL, поэтому вам не нужно устанавливать его самостоятельно. Однако по умолчанию он не запущен, поэтому вам нужно будет запустить его с помощью этой команды в терминале:

sudo service postgresql start

Измените пароль PostgreSQL на «пароль» (или выберите другой пароль):

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, username и password в разделе default выше необходимы).

Добавьте драгоценный камень pg к вашему Gemfile:

gem 'pg'

Выполнить bundle install.

Удалите драгоценный камень sqlite из вашего Gemfile (и, при желании, удалите файлы 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.

person Eliot Sykes    schedule 16.05.2016
comment
Я был полностью разочарован, пытаясь работать над проектом с другого компьютера, используя Cloud 9. Перепробовал так много вещей, чтобы все заработало... это сработало! Спасибо. - person Belder; 16.10.2017

Для меня выполнение шагов в Настройка рабочей области Cloud9 с помощью Rails и 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 запустился без сбоев.

person TinkerTenorSoftwareGuy    schedule 18.07.2015
comment
Это должно быть echo $USER вместо echo $USERNAME? - person Huw; 21.09.2015

Решение найдено. Необходимо отредактировать файл pg_hba.conf, чтобы изменить аутентификацию с одноранговой на md5 следующим образом:

local    postgres     postgres     md5

Файл найти сложно, так как доступ к нему возможен только через терминал в cloud9. Вы не можете найти его в дереве файлов.

Если вы введете следующее в postgres, он покажет вам местоположение

SHOW hba_file;

Затем вы можете найти и отредактировать в vim через терминал.

person jonny_FIVE    schedule 24.10.2014

Краткая версия, когда у вас есть приложение rails до создания каких-либо баз данных:

добавить драгоценный камень «pg» удалить драгоценный камень sqlite3

$ 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.

person foureyedraven    schedule 27.01.2017