Cloud9 postgres
Я пытаюсь настроить базу данных postgres в приложении Rails в Cloud9.
Я выполнил следующие инструкции: 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"
Я совершенно новичок во всем этом, поэтому любые советы будут высоко оценены.
Ответы
Ответ 1
Выполните следующие действия:
-
Создайте новое имя пользователя и пароль для postgresql на cloud9:
$ sudo service postgresql start
$ sudo sudo -u postgres psql
postgres=# CREATE USER username SUPERUSER PASSWORD 'password';
postgres=# \q
-
Создайте переменные ENV на cloud9:
$ echo "export USERNAME=username" >> ~/.profile
$ echo "export PASSWORD=password" >> ~/.profile
$ source ~/.profile
Моя база данных .yml для рельсов 4.2.0 на 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
-
Включите gem pg
в Gemfile и установите:
gem 'pg', '~ > 0.18.2'
$ bundle install
-
Обновить шаблон1 postgresql для database.yml на 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
-
Из командной строки:
bundle exec rake db:create
Ответ 2
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
Ответ 3
Используйте имя пользователя "ubuntu" с пустым паролем. Моя database.yml выглядит следующим образом:
развитие:
адаптер: postgresql
кодирование: unicode
база данных: myflix_development
бассейн: 5
имя пользователя: ubuntu
пароль:
Тест:
адаптер: 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
Я новичок в этом. Надеюсь, что это работает!
Ответ 4
Как настроить 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
.
Ответ 5
Для меня сделать шаги в настройке рабочей области 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 начал без каких-либо икота.
Ответ 6
Нашел решение. Необходимо изменить файл pg_hba.conf, чтобы изменить аутентификацию от однорангового узла до md5 следующим образом:
local postgres postgres md5
Трудно найти файл, поскольку он доступен только через терминал в cloud9. Вы не можете найти его в дереве файлов.
Если вы введете следующее в postgres, он покажет вам местоположение
SHOW hba_file;
Затем вы можете найти и отредактировать в vim через терминал.
Ответ 7
Краткая версия, когда у вас есть приложение rails перед созданием каких-либо баз данных:
добавить драгоценный камень 'pg'
удалить gem 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
Если вы используете героку, вам не понадобится раздел производства в файле database.yml