Страницы

Поиск по вопросам

суббота, 1 июня 2019 г.

Проблема с миграцией базы данных на postgres

При создании базы возникает следующая ошибка:
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 и прочее.
Плюсов у такого подхода хватает:
Работает с настройками по умолчанию: установил, сделал себя-администратора и вперёд Учётные данные ни в какой момент не существуют в рабочем дереве
На "боевом" сервере так делать не стоит, но это уже совсем другая история...

Комментариев нет:

Отправить комментарий