Страницы

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

пятница, 13 марта 2020 г.

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

#ruby_on_rails #postgresql


При создании базы возникает следующая ошибка:

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:

    


Ответы

Ответ 1



Локально можно настроиться на работу по peer athentication, но для этого в базе данных должен быть пользователь с таким же именем, какой у подключающегося логин в операционной системе. Для разработки это можно настроить максимально быстро на чистом дистрибутиве. Чтобы ActiveRecord подключался, удостоверяясь только с помощью учётной записи подключающегося через Unix domain socket, то надо убрать логин, пароль и хост из настроек подключения. Совсем. А сделать "себя" суперпользователем в БД на свежеустановленном PostgreSQL (когда пользователь там всего один, postgres) можно в одну команду: sudo -u postgres createuser --superuser $(whoami) \______________/ \______________________________/ Притворившись Создать суперпользователя с postgres именем, выведенным командой whoami А дальше обычное rake db:create и прочее. Плюсов у такого подхода хватает: Работает с настройками по умолчанию: установил, сделал себя-администратора и вперёд Учётные данные ни в какой момент не существуют в рабочем дереве На "боевом" сервере так делать не стоит, но это уже совсем другая история...

Ответ 2



Замените в конфигурационном файле pg_hba.conf метод аутентификации, вместо аутентификации по системным учетным записям local all postgres peer укажите аутентификацию по паролю local all postgres md5

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

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