@railshello

Как настроить postgresql в Ruby on Rails?

Каждый раз при создании нового проекта мне приходится заходить в sudo -u postgres psql и создавать новые бд.
Как можно этого избежать?

Пробовал редактировать pg_hba.conf, перезапускал сервак не помогло.
pg_hba.conf:
local all all trust
  • Вопрос задан
  • 5605 просмотров
Решения вопроса 1
sim3x
@sim3x
Это к рубям не имеет отношения.

Файл связывает пользователя постгрес с БД
/etc/postgresql/9.X/main/pg_hba.conf
# TYPE  DATABASE        USER            ADDRESS                 METHOD
local   railshelloDB         railshelloPG                                 ident map=railshelloMAP
#local   all                      railshelloPG                                 ident map=railshelloMAP


Файл мапит юзера БД с юзером ОС
/etc/postgresql/9.Х/main/pg_ident.conf
# MAPNAME       SYSTEM-USERNAME         PG-USERNAME
railshelloMAP       railshello       railshelloPG


тетсить от своего юзера
psql
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@deep_orange
Справедливо для Linux.

+ Для подключеия (чтоб не копаться в pg_hba.conf)

Достаточно указать host: localhost. Например:
default: &default
  adapter: postgresql
  encoding: unicode
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: tester
  password: tester
  host: localhost # <- здесь или по месту в development, test

development:
  <<: *default
  database: awesome_development

Всё дело в том, что по умолчанию используется подключение через unix-soket, а это в свою очередь не позволяет "абы-кому" подключаться к базе.

+ Права пользователя

Ну и при создании пользователя у него должны быть на это права:
CREATE ROLE username WITH LOGIN CREATEDB PASSWORD 'secret';
--- или
CREATE USER username WITH CREATEDB PASSWORD 'secret';

CREATE USER равнохуйствененно CREATE ROLE ... WITH LOGIN. Куда важней: CREATEDB
Пользователь по-умолчанию - системный пользователь.
Ответ написан
Freika
@Freika
Senior Ruby on Rails developer
Вписываете настройки вашей базы (логин-пароль-адрес-порт) в database.yml, а затем в папке проекта выполняете rake db:create
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы