Вопрос или проблема
Я пытаюсь войти в psql, используя sudo -u postgres psql
в терминале на локальном компьютере, но пароль по умолчанию, такой как postgres
, не работает. Также я заметил, что порт по умолчанию теперь 5433 вместо старого 5432 в предыдущих версиях. Пожалуйста, сообщите мне пароль, если вам известен этот пароль.
Попытки подключения от клиентов, таких как DBeaver, также потерпели неудачу из-за этой же проблемы.
xander@workstation:/usr/lib/postgresql/17$ sudo -u postgres psql
Пароль для пользователя postgres:
psql: ошибка: подключение к серверу по сокету "/var/run/postgresql/.s.PGSQL.5433" не удалось: СМЕРТЕЛЬНАЯ ОШИБКА: аутентификация пароля не удалась для пользователя "postgres"
Фрагмент из postgresql.conf
:
# - Настройки подключения -
listen_addresses="localhost" # на каком IP-адресе(ах) слушать;
# список адресов через запятую;
# по умолчанию 'localhost'; используйте '*' для всех
# (изменение требует перезапуска)
port = 5433 # (изменение требует перезапуска)
max_connections = 100
Фрагмент из pg_hba.conf
:
# Вход администратора базы данных через сокет Unix
local all postgres peer
# ТИП БАЗА ДАННЫХ ПОЛЬЗОВАТЕЛЬ АДРЕС МЕТОД
# "local" предназначен только для подключений по сокету Unix
local all all peer
# Локальные соединения IPv4:
host all all 127.0.0.1/32 scram-sha-256
# Локальные соединения IPv6:
host all all ::1/128 scram-sha-256
# Разрешить подключения репликации с localhost, для пользователя с
# привилегией репликации.
local replication all peer
host replication all 127.0.0.1/32 scram-sha-256
host replication all ::1/128 scram-sha-256
Заранее спасибо!
Ответ или решение
Для решения проблемы с подключением к PostgreSQL 17 на Ubuntu 24.04 через локальный хост, давайте рассмотрим несколько аспектов, которые могут помочь вам устранить возникшую ошибку.
1. Проверка пароля для пользователя postgres
Стандартный пароль для пользователя postgres
обычно не устанавливается во время установки PostgreSQL. Вместо этого для административного доступа к базе данных по умолчанию используется метод аутентификации, который основан на пользователе операционной системы. В вашем случае используется метод peer
для местных подключений, что означает, что для успешного входа просто необходимо быть пользователем postgres
в системе, и пароль может не требоваться.
2. Проверьте файл конфигурации pg_hba.conf
Согласно вашему фрагменту файла pg_hba.conf
, вы используете:
local all postgres peer
Это означает, что для подключения через локальный сокет пользователю postgres
необходимо авторизоваться как системный пользователь postgres
. Вам не нужно вводить пароль.
Если вы хотите подключаться с паролем, вам нужно изменить метод аутентификации. Например, измените строку для postgres
на md5
, как показано ниже:
local all postgres md5
После внесения изменений не забудьте перезапустить сервер PostgreSQL:
sudo systemctl restart postgresql
3. Подключение к серверу на правильном порту
Вы упомянули, что по умолчанию порт изменился на 5433. Если вы используете клиентские приложения (например, DBeaver), убедитесь, что они также настроены на подключение к порту 5433. В терминале вы можете использовать следующую команду для подключения к нужному порту:
sudo -u postgres psql -p 5433
4. Аутентификация через DBeaver
Если вы хотите подключиться через DBeaver или другой клиент, убедитесь, что:
- Вы используете порт 5433.
- Метод аутентификации соответствует тому, что вы установили в
pg_hba.conf
. - Если вы изменили аутентификацию на
md5
, убедитесь, что у вас есть правильный пароль. Если вы не помните пароль, вы можете его сбросить с помощью:sudo -u postgres psql
Затем введите следующую команду для установки нового пароля (замените
new_password
на ваш новый пароль):ALTER USER postgres PASSWORD 'new_password';
5. Проверка статуса сервера
Убедитесь, что сервер PostgreSQL запущен, выполнив:
sudo systemctl status postgresql
Если он не запущен, используйте следующую команду для его запуска:
sudo systemctl start postgresql
Заключение
Следуя указанным шагам, вы должны быть в состоянии подключиться к своей базе данных PostgreSQL. Если у вас возникли дополнительные вопросы, не стесняйтесь их задавать. Удачи!