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:

  1. Откройте файл конфигурации:

    sudo nano /etc/postgresql/14/main/pg_hba.conf
    

    (замените 14 на вашу версию PostgreSQL, если она отличается).

  2. Найдите строки, которые выглядят так:

    local   all             postgres                                peer
    
  3. Измените peer на md5:

    local   all             postgres                                md5
    
  4. Сохраните файл (Ctrl+O, затем Enter, затем Ctrl+X).

  5. Перезапустите службу PostgreSQL:

    sudo systemctl restart postgresql
    

Теперь PostgreSQL будет использовать пароль для аутентификации, а не Peer.


4. Установить пароль для пользователя postgres

Если вы ещё не задавали пароль для пользователя postgres, сделайте это через psql:

  1. Подключитесь к psql под пользователем postgres:

    sudo -i -u postgres
    psql
    
  2. Введите команду для установки пароля:

    ALTER USER postgres PASSWORD 'ваш_пароль';
    
  3. Выйдите из psql:

    \q
    

Теперь вы можете подключаться к PostgreSQL с использованием команды:

psql -U postgres -W

(Флаг -W запрашивает ввод пароля.)

Тперь всё должно работать =)