For students of Netology/подключение к Postgresql в Linux.md
Часто пользователи Linux получают примерно такую ошибку:
не удалось подключиться к базе template: подключиться к серверу через сокет “/var/run/postgresql/.s.PGSQL.5432” не удалось: ВАЖНО: пользователь “postgres” не прошёл проверку подлинности (Peer)
Проблема заключается в методе аутентификации PostgreSQL. По умолчанию на Ubuntu PostgreSQL использует метод аутентификации Peer
для локальных соединений, который требует, чтобы имя пользователя операционной системы совпадало с именем пользователя PostgreSQL. Однако ваш пользователь ОС, вероятно, не совпадает с postgres
.
Вот шаги, чтобы исправить эту проблему:
1. Войти как пользователь postgres
Сначала выполните команду для переключения на пользователя postgres
, который имеет все права для управления PostgreSQL:
sudo -i -u postgres
Теперь вы находитесь под пользователем postgres
. Попробуйте создать базу данных:
createdb test
2. Подключиться к psql
Если вы хотите работать с psql
, подключитесь так:
psql
Или, если база данных создана, укажите её имя:
psql -d test
3. Изменить метод аутентификации
Если вам нужно использовать пользователя Ubuntu, а не postgres
, измените метод аутентификации в файле pg_hba.conf
:
-
Откройте файл конфигурации:
sudo nano /etc/postgresql/14/main/pg_hba.conf
(замените
14
на вашу версию PostgreSQL, если она отличается). -
Найдите строки, которые выглядят так:
local all postgres peer
-
Измените
peer
наmd5
:local all postgres md5
-
Сохраните файл (
Ctrl+O
, затемEnter
, затемCtrl+X
). -
Перезапустите службу PostgreSQL:
sudo systemctl restart postgresql
Теперь PostgreSQL будет использовать пароль для аутентификации, а не Peer
.
4. Установить пароль для пользователя postgres
Если вы ещё не задавали пароль для пользователя postgres
, сделайте это через psql
:
-
Подключитесь к
psql
под пользователемpostgres
:sudo -i -u postgres psql
-
Введите команду для установки пароля:
ALTER USER postgres PASSWORD 'ваш_пароль';
-
Выйдите из
psql
:\q
Теперь вы можете подключаться к PostgreSQL с использованием команды:
psql -U postgres -W
(Флаг -W
запрашивает ввод пароля.)
Тперь всё должно работать =)