Я получаю ошибку:
FATAL: Peer authentication failed for user "postgres"
когда я пытаюсь заставить postgres работать с Rails.
Вот мой pg_hba.conf
, мой database.yml
и дамп полного следа .
Я изменил аутентификацию на md5 в pg_hba и пробовал разные вещи, но, похоже, ничего не работает.
Я также попытался создать нового пользователя и базу данных в соответствии с Rails 3.2, FATAL: неудачная аутентификация для пользователя (PG :: Error)
Но они не появляются на pgadmin или даже когда я бегу sudo -u postgres psql -l
.
Есть идеи, где я иду не так?
ruby-on-rails
postgresql
orderof1
источник
источник
localhost
но успешным127.0.0.1
.host: localhost
вdatabase.yml
файл.Ответы:
Проблема все еще в вашем
pg_hba.conf
файле (/etc/postgresql/9.1/main/pg_hba.conf*
).Эта строка:
Должно быть:
* Если вы не можете найти этот файл, запуск
locate pg_hba.conf
должен показать вам, где находится файл.После изменения этого файла не забудьте перезапустить ваш сервер PostgreSQL. Если вы работаете в Linux, это было бы
sudo service postgresql restart
.Это краткое описание обеих опций в соответствии с официальными документами PostgreSQL по методам аутентификации .
Одноранговая аутентификация
Аутентификация по паролю
Пример местоположения для
pg_hba.conf
:/etc/postgresql/9.1/main/pg_hba.conf
источник
/etc/init.d/postgresql reload
/etc/postgresql/9.1/main/pg_hba.conf
sudo service postgreql restart
тоже работает.После установки Postgresql я сделал следующие шаги.
откройте файл
pg_hba.conf
для Ubuntu, в котором он будет находиться,/etc/postgresql/9.x/main
и измените эту строку:в
Перезагрузите сервер
Войдите в psql и установите свой пароль
Наконец изменить
pg_hba.conf
изв
После перезапуска сервера postgresql вы можете получить к нему доступ со своим собственным паролем.
Детали методов аутентификации:
для дальнейшей проверки здесь
источник
sudo passwd postgres
Если вы подключаетесь через localhost (127.0.0.1), у вас не должно возникнуть этой конкретной проблемы. Я бы не стал много гадать с pg_hba.conf, но вместо этого я бы изменил строку подключения:
где someuser - это ваш пользователь, к которому вы подключаетесь, а database - это база данных, к которой у вас есть права доступа.
Вот что я делаю на Debian для настройки postgres:
Наслаждайтесь!
источник
host: 127.0.0.1
по умолчанию на localhost в config / database.yml - оно находится на той же машине, поэтому я не понимаю, почемуЭто сработало для меня!
источник
Если у вас есть проблема, вам нужно найти свой
pg_hba.conf
. Команда:find / -name 'pg_hba.conf' 2>/dev/null
и после этого измените файл конфигурации:
Postgresql 9,3
Postgresql 9,4
Следующий шаг: Перезапуск вашего экземпляра БД:
service postgresql-9.3 restart
Если у вас возникли проблемы, вам нужно снова установить пароль:
ALTER USER db_user with password 'db_password';
источник
В моем случае:
Так что это будет изменено на:
Административный вход в базу данных с помощью доменного сокета Unix local все postgres peer
Эта:
Административный вход в базу данных через сокет домена Unix локальный все postgres md5
Затем перезапустите сервер pg:
$> перезапуск службы sudo после перезапуска
Ниже приведен список методов, используемых для соединения с postgres:
Примечание: если вы еще не создали пользователя postgres. Создайте это, и теперь вы можете получить доступ к серверу postgres, используя учетные данные этого пользователя.
СОВЕТ: Если после перезапуска postgres он не работает, закройте терминал и снова откройте.
источник
Это решило мою проблему
источник
У меня такая же проблема.
Решение от депа абсолютно правильное.
Просто убедитесь, что у вас есть пользователь, настроенный на использование PostgreSQL.
Проверьте файл:
Разрешение этого файла должно быть предоставлено пользователю, у которого вы зарегистрировали свой psql.
Дальше. Если ты хорош до сих пор ..
Обновление в соответствии с инструкциями @ depa.
т.е.
а затем внести изменения.
источник
-rw-r----- 1 postgres postgres 4640 Jun 16 09:59 /etc/postgresql/9.5/main/pg_hba.conf
Если вы хотите сохранить конфигурацию по умолчанию, но хотите аутентификацию md5 с сокетным соединением для одного конкретного пользователя / db-соединения, добавьте «локальную» строку ДО строки «local all / all»:
источник
Я перемещал каталог данных на клонированный сервер и не мог войти в систему как postgres. Сброс пароля postgres, как это работает для меня.
источник
Вышеприведенные изменения сработали для меня, когда я понял, что мне нужно перезапустить сервер postgres после их создания. Для убунту:
источник
Смена партнера METHOD для доверия pg_hba.conf (/etc/postgresql/9.1/main/pg_hba.conf | строка 85) решает проблему. При добавлении md5 запрашивается пароль, поэтому, если требуется избегать использования паролей, используйте доверие вместо md5 .
источник
Используйте
host=localhost
в связи.источник
Следующая команда работает для меня:
источник
-W --password Force psql to prompt for a password before connecting to a database. This option is never essential, since psql will automatically prompt for a password if the server demands password authentication. However, psql will waste a connection attempt finding out that the server wants a password. In some cases it is worth typing -W to avoid the extra connection attempt.
Вам нужно просто установить МЕТОД, чтобы доверять.
И перезагрузите сервер postgres.
Изменения в pg_hba.conf не требуют RESTART postgres сервера. просто перезагружать.
источник
Многие другие ответы относятся к настройкам в различных конфигурационных файлах, а те, которые относятся к
pg_hba.conf
do, применимы и являются на 100% правильными. Однако убедитесь, что вы изменяете правильные файлы конфигурации .Как уже упоминалось, расположение файла конфигурации может быть переопределено различными настройками внутри основного файла конфигурации, а также указанием пути к главному файлу конфигурации в командной строке с помощью этой
-D
опции.Вы можете использовать следующую команду в сеансе psql, чтобы показать, где читаются ваши файлы конфигурации (при условии, что вы можете запустить psql). Это просто шаг устранения неполадок, который может помочь некоторым людям:
Вы также должны убедиться, что домашний каталог для вашего пользователя postgres находится там, где вы ожидаете. Я говорю об этом, потому что это легко упустить из-за того, что ваша подсказка будет отображать '
~
' вместо фактического пути вашего домашнего каталога, что делает его не таким очевидным. Многие установки по умолчанию используют домашний каталог пользователя postgres/var/lib/pgsql
.Если он не установлен на то, что он должен быть, остановите службу postgresql и используйте следующую команду при входе в систему как root. Также убедитесь, что пользователь postgres не вошел в другой сеанс:
Наконец, убедитесь, что ваша переменная PGDATA установлена правильно, набрав
echo $PGDATA
, что должно вывести что-то похожее на:Если он не установлен или показывает что-то, отличное от ожидаемого, проверьте файлы запуска или RC, такие как .profile или .bash.rc - это будет сильно зависеть от вашей ОС и вашей оболочки. После того, как вы определили правильный сценарий запуска для вашего компьютера, вы можете вставить следующее:
Для моей системы я поместил это
/etc/profile.d/profile.local.sh
так, чтобы это было доступно для всех пользователей.Теперь вы должны иметь возможность инициализировать базу данных как обычно, и все ваши пути к psql должны быть правильными!
источник
pg_config предназначен для информации о комплиментах, чтобы помочь расширениям и клиентским программам компилироваться и связываться с PostgreSQL. Он ничего не знает об активных экземплярах PostgreSQL на машине, только двоичные файлы.
pg_hba.conf может появляться во многих других местах в зависимости от того, как был установлен Pg. Стандартное расположение - pg_hba.conf в каталоге data_directory базы данных (который может быть в / home, / var / lib / pgsql, / var / lib / postgresql / [версия] /, / opt / postgres /, и т. Д. И т. Д. И т. Д. И т. Д.) но пользователи и упаковщики могут поставить его где угодно. К несчастью.
Единственный действительный способ найти pg_hba.conf - это спросить работающий экземпляр PostgreSQL, где находится pg_hba.conf, или спросить системного администратора, где он находится. Вы даже не можете полагаться на вопрос о том, где находится datadir и парсинге postgresql.conf, потому что сценарий инициализации может передать такой параметр как -c hba_file = / some / other / path при запуске Pg.
Что вы хотите сделать, это спросить PostgreSQL:
Эта команда должна выполняться в сеансе суперпользователя, поэтому для сценариев оболочки вы можете написать что-то вроде:
и установите переменные окружения PGUSER, PGDATABASE и т. д., чтобы убедиться, что соединение установлено правильно.
Да, это в некоторой степени проблема курицы и яйца: в том случае, если пользователь не может подключиться (скажем, после того, как испортил редактирование pg_hba.conf), вы не можете найти pg_hba.conf, чтобы исправить это.
Другой вариант - посмотреть на вывод команды ps и посмотреть, виден ли там аргумент каталога данных postmaster -D, например
поскольку pg_hba.conf будет находиться в каталоге данных (если вы не используете Debian / Ubuntu или какую-либо производную и используете их пакеты).
Если вы нацелены конкретно на системы Ubuntu с PostgreSQL, установленным из пакетов Debian / Ubuntu, это станет немного проще. Вам не нужно иметь дело с Pg, скомпилированным вручную из исходного кода, для которого чей-то initdb-файл dadadir установлен в его домашнем каталоге, или с помощью EnterpriseDB Pg, установленным в / opt и т. Д. Вы можете задать pg_wrapper, Debian / Ubuntu multi -version Pg manager, где PostgreSQL использует команду pg_lsclusters из pg_wrapper.
Если вы не можете подключиться (Pg не запущен или вам нужно отредактировать pg_hba.conf для подключения), вам придется искать в системе файлы pg_hba.conf. В Mac и Linux что-то вроде sudo find / -type f -name pg_hba.conf подойдет. Затем проверьте файл PG_VERSION в том же каталоге, чтобы убедиться, что это правильная версия PostgreSQL, если у вас их больше одной. (Если pg_hba.conf находится в / etc /, игнорируйте это, вместо этого это имя родительского каталога). Если у вас есть несколько каталогов данных для одной и той же версии PostgreSQL, вам придется посмотреть на размер базы данных, проверьте командную строку запущенного postgres из ps, чтобы увидеть, совпадает ли его аргумент каталога -D с тем, где вы редактируете, и т. Д. . /ubuntu/256534/how-do-i-find-the-path-to-pg-hba-conf-from-the-shell/256711
источник
Моя проблема была в том, что я не набирал ни одного сервера. Я думал, что это по умолчанию из-за заполнителя, но когда я набрал localhost, это сработало.
источник
Если вы пытаетесь найти этот файл в Cloud 9, вы можете сделать
Нажмите
I
для редактирования / вставки, нажмитеESC
3 раза и введите,:wq
чтобы сохранить файл и выйтиисточник
Если вы столкнулись с этой проблемой, связанной с rails, и знаете, что вы уже создали это имя пользователя с паролем и правильные права, то вам просто нужно добавить следующее в конец файла database.yml.
общий файл будет выглядеть ниже
Вам не нужно трогать ваш
pg_hba.conf
файл вообще. Удачного кодированияисточник
Самое простое решение без изменения конфигов. (Ubuntu) Сменить пользователя, затем подключиться к базе данных.
взяты из https://www.digitalocean.com/community/tutorials/how-to-install-and-use-postgresql-on-ubuntu-18-04
источник