При создании базы возникает следующая ошибка:
andrey@asus:~/project/odnogrupniki$ rake db:create:all
FATAL: Peer authentication failed for user "odnogrupniki"
логи целиком: ТУТ
databse.yml:
default: &default
adapter: postgresql
encoding: unicode
pool: 5
timeout: 5000
username: 'odnogrupniki'
password: '1111'
development:
<<: *default
database: odnogrupniki
test:
<<: *default
database: odnogrupniki_test
production:
<<: *default
database: odnogrupniki_production
в Gemfile добавлял: gem 'pg'
Bundle - выполнял
andrey@asus:~/project/odnogrupniki$ psql --version
psql (PostgreSQL) 9.5.1
Пользователя создавал так:
postgres@asus:/home/andrey/project/odnogrupniki$ createuser odnogrupniki -P -S -R -D
Enter password for new role:
Enter it again:
Ответ
Локально можно настроиться на работу по peer athentication, но для этого в базе данных должен быть пользователь с таким же именем, какой у подключающегося логин в операционной системе. Для разработки это можно настроить максимально быстро на чистом дистрибутиве.
Чтобы ActiveRecord подключался, удостоверяясь только с помощью учётной записи подключающегося через Unix domain socket, то надо убрать логин, пароль и хост из настроек подключения. Совсем. А сделать "себя" суперпользователем в БД на свежеустановленном PostgreSQL (когда пользователь там всего один, postgres) можно в одну команду:
sudo -u postgres createuser --superuser $(whoami)
\______________/ \______________________________/
Притворившись Создать суперпользователя с
postgres именем, выведенным командой whoami
А дальше обычное rake db:create и прочее.
Плюсов у такого подхода хватает:
Работает с настройками по умолчанию: установил, сделал себя-администратора и вперёд
Учётные данные ни в какой момент не существуют в рабочем дереве
На "боевом" сервере так делать не стоит, но это уже совсем другая история...
Комментариев нет:
Отправить комментарий