Ошибка при получении: Ошибка аутентификации сверстников для пользователя «postgres» при попытке заставить pgsql работать с рельсами

Я получаю

FATAL: Peer authentication failed for user "postgres" 

когда я пытаюсь заставить postgres работать с Rails.

Вот мой pg_hba.conf , мой database.yml и свалка полного следа .

Я изменил аутентификацию на md5 в pg_hba и пробовал разные вещи, но никто не работает.

Я также попытался создать нового пользователя и базу данных в соответствии с Rails 3.2, FATAL: Ошибка одноранговой аутентификации для пользователя (PG :: Ошибка)

Но они не отображаются на pgadmin или даже когда я запускаю sudo -u postgres psql -l

Любая идея, где я ошибаюсь?

Проблема по-прежнему остается в pg_hba.conf (/etc/postgresql/9.1/main/pg_hba.conf*). Эта строка:

 local all postgres peer 

Должно быть

 local all postgres md5 

* Если вы не можете найти этот файл, запустите locate pg_hba.conf должен показать вам, где находится файл.

После изменения этого файла не забудьте перезагрузить сервер PostgreSQL. Если вы работаете в Linux, это будет sudo service postgresql restart .

Это краткое описание обоих вариантов в соответствии с официальными документами PostgreSQL по методам проверки подлинности .

Аутентификация со стороны

Метод одноранговой аутентификации работает путем получения имени пользователя операционной системы клиента из ядра и использования его в качестве разрешенного имени пользователя базы данных (с необязательным сопоставлением имен пользователей). Этот метод поддерживается только локальными подключениями.

Проверка пароля

Методы проверки подлинности на основе пароля – это md5 и пароль. Эти методы работают аналогично, кроме способа передачи пароля по соединению, а именно MD5-hashа и четкого текста соответственно.

Если вас вообще беспокоят пароли «обнюхивания» атак, то предпочтительным является md5. По возможности всегда следует избегать простого пароля. Однако md5 нельзя использовать с функцией db_user_namespace. Если соединение защищено SSL-шифрованием, тогда пароль можно использовать безопасно (хотя проверка подлинности SSL-сертификата может быть лучшим выбором, если он зависит от использования SSL).

Пример расположения pg_hba.conf

/etc/postgresql/9.1/main/pg_hba.conf

После установки Postgresql я сделал следующие шаги.

  1. откройте файл pg_hba.conf для Ubuntu, он будет в /etc/postgresql/9.x/main и изменит эту строку:
  местный all postgres peer 

в

  местное доверие postgres 
  1. Перезапустить сервер
 sudo service postgresql restart 
  1. Войдите в psql и задайте свой пароль

psql -U postgres

 ALTER USER postgres with password 'your-pass'; 
  1. Наконец, измените pg_hba.conf из
  местное доверие postgres 

в

  местный все postgres md5 

После перезапуска сервера postgresql вы можете получить к нему доступ со своим собственным паролем

Сведения о методах проверки подлинности:

доверие – любой, кто может подключиться к серверу, имеет право доступа к базе данных

одноранговое имя пользователя операционной системы клиента в качестве имени пользователя базы данных для доступа к нему.

md5 – аутентификация на основе пароля

для дополнительной справки здесь

Если вы подключаетесь через localhost (127.0.0.1), вы не должны испытывать эту конкретную проблему. Я бы не стал гадости с pg_hba.conf, но вместо этого я бы отрегулировал вашу строку соединения:

 psql -U someuser -h 127.0.0.1 database 

где someuser – ваш пользователь, с которым вы подключаетесь, а firebase database – это firebase database, к которой у пользователя есть разрешение для подключения.

Вот что я делаю на Debian для установки postgres:

 http://www.postgresql.org/download/linux/debian/ (Wheezy 7.x) as root … [email protected]:~# echo "deb http://apt.postgresql.org/pub/repos/apt/ wheezy-pgdg main" >> /etc/apt/sources.list [email protected]:~# wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - [email protected]:~# apt-get update [email protected]:~# apt-get install postgresql-9.4 [email protected]:~# su - postgres [email protected]:~$ createuser --interactive -P someuser Enter password for new role: Enter it again: Shall the new role be a superuser? (y/n) n Shall the new role be allowed to create databases? (y/n) y Shall the new role be allowed to create more new roles? (y/n) n [email protected]:~$ createdb -O someuser database [email protected]:~$ psql -U someuser -h 127.0.0.1 database 

Наслаждайтесь!

Это сработало для меня!

 sudo -u postgres psql 
  1. Перейдите к этому файлу /etc/postgresql/9.x/main/ и откройте файл pg_hba.conf

В моем случае:

 $> sudo nano /etc/postgresql/9.3/main/pg_hba.conf 
  1. Заменить peer с помощью md5

Таким образом, это будет изменено на:

Вход для администратора базы данных по Unix-домену сокет локальный все postgres peer

 # TYPE DATABASE USER ADDRESS METHOD # "local" is for Unix domain socket connections only local all all peer # IPv4 local connections: host all all 127.0.0.1/32 md5 

Эта:

Административный вход в базу данных по домену Unix локальный все postgres md5

 # TYPE DATABASE USER ADDRESS METHOD # "local" is for Unix domain socket connections only local all all md5 # IPv4 local connections: host all all 127.0.0.1/32 md5 
  1. Затем перезапустите pg-сервер:

    $> sudo service postgresql restart

Ниже приведен список МЕТОДОВ, используемых для подключения к postgres:

 # METHOD can be "trust", "reject", "md5", "password", "gss", "sspi", # "krb5", "ident", "peer", "pam", "ldap", "radius" or "cert". Note that # "password" sends passwords in clear text; "md5" is preferred since # it sends encrypted passwords. 

Примечание. Если вы еще не создали пользователя postgres. Создайте это, и теперь вы можете получить доступ к серверу postgres, используя учетные данные этого пользователя.

Если у вас есть проблемы, вам нужно найти свой pg_hba.conf

find / -name 'pg_hba.conf' 2>/dev/null

и измените конфигурационный файл:

Postgresql 9.3

Postgresql 9.3

Postgresql 9.4

Postgresql 9.3

После этого вы должны перезапустить службу postgresql

Пример для postgresql 9.3

service postgresql-9.3 restart

Если у вас возникли проблемы, вам нужно снова установить пароль:

ALTER USER db_user with password 'db_password';

У меня такая же проблема.

Решение от депы абсолютно корректно.

Просто убедитесь, что у вас пользователь настроен на использование PostgreSQL.

Проверьте файл:

 $ ls /etc/postgresql/9.1/main/pg_hba.conf -l 

Разрешение этого файла должно быть предоставлено пользователю, с которым вы зарегистрировали свой psql.

В дальнейшем. Если ты добрался до сих пор ..

Обновление согласно инструкциям @ depa.

т.е.

 $ sudo nano /etc/postgresql/9.1/main/pg_hba.conf 

а затем внести изменения.

Редакции выше работали для меня, после того как я понял, что мне нужно перезапустить сервер postgres после их создания. Для ubuntu:

 sudo /etc/init.d/postgresql restart 

Если вы хотите сохранить конфигурацию по умолчанию, но хотите, чтобы аутентификация md5 с подключением сокетов для одного конкретного подключения пользователя / db, добавьте «локальную» строку ДО «локальную все / все»:

 # TYPE DATABASE USER ADDRESS METHOD # "local" is for Unix domain socket connections only local username dbname md5 # <-- this line local all all peer # IPv4 local connections: host all all 127.0.0.1/32 ident # IPv6 local connections: host all all ::1/128 ident 

Я перемещал каталог данных на клонированном сервере и имел проблемы с регистрацией в качестве postgres. Сброс пароля postgres как это сработало для меня.

root# su postgres postgres$ psql -U postgres psql (9.3.6) Type "help" for help. postgres=#\password Enter new password: Enter it again: postgres=#

Используйте host=localhost в соединении.

 PGconn *conn = PQconnectdb( "host=localhost user=postgres dbname=postgres password=123" ); 

Изменение решения, связанного с методом METHOD, чтобы доверять pg_hba.conf (/etc/postgresql/9.1/main/pg_hba.conf | строка 85), решает проблему. Добавление md5 запрашивает пароль, поэтому, если есть требование избежать использования паролей, используйте trust вместо md5 .

для меня работает команда ниже:

 psql -d myDb -U username -W 

Вам просто нужно доверять МЕТОД.

 #TYPE DATABASE USER ADDRESS METHOD local all all trust 

И перезагрузите сервер postgres.

 # service postgresql-9.5 reload 

Изменения в pg_hba.conf не требуют сервера postgres RESTART. просто RELOAD.

Многие другие ответы относятся к настройкам в различных файлах конфигурации, а те, которые относятся к pg_hba.conf , применяются и на 100% правильны. Однако убедитесь, что вы изменяете правильные файлы конфигурации .

Как уже упоминалось, расположение конфигурационных файлов может быть переопределено различными настройками в основном файле конфигурации, а также указать путь к основному файлу конфигурации в командной строке с опцией -D .

Вы можете использовать следующую команду, находясь в сеансе psql, чтобы показать, где читаются ваши файлы конфигурации (при условии, что вы можете запустить psql). Это всего лишь шаг устранения неполадок, который может помочь некоторым людям:

 select * from pg_settings where setting~'pgsql'; 

Вы также должны убедиться, что домашний каталог для вашего пользователя postgres – это то место, где вы ожидаете. Я говорю это, потому что это довольно легко упустить из-за того, что ваше приглашение будет отображать « ~ » вместо фактического пути вашего домашнего каталога, что делает его не столь очевидным. Во многих установках по умолчанию используется домашний каталог пользователя postgres для /var/lib/pgsql .

Если он не настроен на то, что он должен быть, остановите службу postgresql и используйте следующую команду при входе в систему как пользователь root. Также убедитесь, что пользователь postgres не зашел в другой сеанс:

 usermod -d /path/pgsql postgres 

Наконец, убедитесь, что ваша переменная PGDATA установлена ​​правильно, набрав echo $PGDATA , которая должна выводить что-то похожее:

 /path/pgsql/data 

Если он не установлен или показывает что-то отличное от того, что вы ожидаете от него, изучите свои файлы запуска или RC, такие как .profile или .bash.rc – это сильно изменится в зависимости от вашей ОС и вашей оболочки. После того, как вы определили правильный сценарий запуска для своего компьютера, вы можете вставить следующее:

 export PGDATA=/path/pgsql/data 

Для моей системы я поместил это в /etc/profile.d/profile.local.sh чтобы он был доступен для всех пользователей.

Теперь вы можете запустить базу данных как обычно, и все ваши настройки пути psql должны быть правильными!

Моя проблема заключалась в том, что я не набирал сервер. Я думал, что это по умолчанию из-за заполнителя, но когда я набрал localhost, это сработало.

Если вы пытаетесь найти этот файл в Cloud 9, вы можете сделать

 sudo vim /var/lib/pgsql9/data/pg_hba.conf 

Нажмите I для редактирования / вставки, нажмите ESC 3 раза и введите :wq сохранит файл и закроется

Если вы столкнулись с этой проблемой с рельсами, и вы знаете, что вы уже создали это имя пользователя с паролем вместе с правильными правами, вам просто нужно поместить следующее в конец вашего файла database.yml.

 host: localhost 

общий файл будет выглядеть ниже

 development: adapter: postgresql encoding: unicode database: myapp_development pool: 5 username: root password: admin host: localhost 

Вам вообще не нужно прикасаться к файлу pg_hba.conf . Счастливое кодирование

  • неинициализированная константа MysqlCompat :: MysqlRes (с использованием mms2r gem)
  • Ruby on Rails will_paginate массив
  • Использование шрифтов с конвейером Rails
  • Используя Rails, как я могу установить свой первичный ключ, чтобы он не был столбцом с целым типом?
  • Rspec и названные маршруты
  • Одностраничное приложение и токен CSRF
  • Rails 2.3-стиль плагинов и предупреждения о предупреждениях, выполняемые в Heroku
  • Используйте обе таблицы учетных записей и пользователей с помощью программы «Разработка»
  • Изменение базового URL-адреса для разработки Rails 3
  • GroupingError: ERROR: столбец должен отображаться в предложении GROUP BY или использоваться в агрегатной функции
  • Rails, проверка подлинности, проблема CSRF
  • Давайте будем гением компьютера.