Невозможно использовать psql “sudo: неизвестный пользователь” “sudo: невозможно инициализировать плагин политики”

Вопрос или проблема

Я работаю над ботом для Discord, который использует базу данных PostgreSQL, и я пытаюсь установить его на сервере Vultr (Ubuntu 20.04). Все работает отлично, пока я не доберусь до части, где пытаюсь создать базу данных на сервере. Я пытался следовать нескольким руководствам о том, как это настроить, но каждый раз, когда я пытаюсь выполнить любые команды postgres/psql, такие как sudo -u postgres createuser --interactive, я получаю ошибку, говорящую не удалось сменить каталог на "/root": Доступ запрещен.

Когда я пытаюсь войти в созданного мной пользователя, используя sudo -u araraura psql, я получаю ошибки, говорящие sudo: неизвестный пользователь: araraura и sudo: невозможно инициализировать плагин политики.

Я уже сутки ищу решения в интернете, но не смог найти ни одного рабочего решения.

У меня была та же проблема на Ubuntu 20.04 с PostgreSQL 12, и вот как я это РЕШИЛ:

  • откройте файл pg_hba.conf в своем любимом редакторе
  • Пример: sudo nano /etc/postgresql/12/main/pg_hba.conf

Тогда вы увидите что-то вроде этого:

#local         DATABASE  USER  ADDRESS  METHOD  [OPTIONS]
#host          DATABASE  USER  ADDRESS  METHOD  [OPTIONS]
#hostssl       DATABASE  USER  ADDRESS  METHOD  [OPTIONS]
#hostnossl     DATABASE  USER  ADDRESS  METHOD  [OPTIONS]
#hostgssenc    DATABASE  USER  ADDRESS  METHOD  [OPTIONS]

Уберите # с первой строки, что раскомментирует local, и замените на следующее:

local         all       all            trust

Local — это то, как вы управляете соединениями через сокеты Unix-доменов, теперь вы можете подключиться к вашей базе данных без запроса пароля. Если вы хотите, чтобы вас спрашивали пароль при подключении к базе данных, замените метод “trust” на “md5” и выполните следующее:

psql -U your_username db_name 

Чтобы войти в psql с новой созданной ролью пользователя, вам нужен пользователь Linux с тем же именем, что и ваша новая роль Postgres.

Чтобы добавить новосозданного пользователя как пользователя Linux:

  • sudo adduser <new_user_role>

Ответ или решение

Ошибка при работе с psql на сервере Ubuntu 20.04: "sudo: unknown user" и "sudo: unable to initialize policy plugin"

При попытке взаимодействия с PostgreSQL на вашем сервере Vultr с Ubuntu 20.04 вы столкнулись с рядом ошибок, включая сообщения "sudo: unknown user: araraura" и "sudo: unable to initialize policy plugin". Давайте подробнее разберем эти проблемы и предложим пути их решения.

1. Понять ошибки

Сообщение "sudo: unknown user: araraura" указывает на то, что система не распознает пользователя araraura. Это может быть вызвано тем, что пользователь не был создан или неправильно настроен.

Сообщение "sudo: unable to initialize policy plugin" часто возникает из-за проблем с конфигурацией sudo или отсутствия необходимых компонентов для работы с ним.

2. Проверка наличия пользователя

Первым делом, нужно убедиться, что пользователь araraura действительно существует в системе. Вы можете проверить наличие этого пользователя с помощью следующей команды:

getent passwd araraura

Если вывод пуст, значит, пользователь не существует. Чтобы создать его, выполните:

sudo adduser araraura

3. Работа с PostgreSQL

Если пользователь создан, вы можете попытаться перейти к созданию ролей и баз данных в PostgreSQL. Однако, возможно, вы столкнетесь с ошибкой, которая говорит о том, что к вашему домашнему каталогу нет доступа, например, "could not change directory to "/root": Permission denied". Это свидетельствует о возможной проблеме с разрешениями.

Исправление конфигурации pg_hba.conf

Для устранения проблем с подключением к базе данных необходимо провести корректировку конфигурации PostgreSQL. В частности, файл pg_hba.conf можно редактировать для изменения методов аутентификации.

  1. Откройте файл pg_hba.conf в текстовом редакторе:
sudo nano /etc/postgresql/12/main/pg_hba.conf
  1. Найдите строку, которая выглядит как:
#local         DATABASE  USER  ADDRESS  METHOD  [OPTIONS]
  1. Удалите # в начале строки, чтобы раскомментировать её, и измените её на:
local         all       all            trust

Эта настройка позволит подключаться к базе данных без запроса пароля.

Важно: Использование метода trust не рекомендуется в продуктивной среде. Это стоит сделать только для тестирования. После успешного соединения вы можете заменить trust на md5, чтобы обеспечить вход с паролем.

4. Создание базы данных и пользователей

После изменения конфигурации вам может понадобиться создать пользователя и базу данных в PostgreSQL:

sudo -u postgres createuser --interactive

и

sudo -u postgres createdb your_database_name

5. Проверьте права доступа к пользователям

Если вы создаете пользователя PostgreSQL, убедитесь, что у вас есть соответствующий системный пользователь. Например, если вы создали пользователя araraura в PostgreSQL, вам нужно также создать системного пользователя:

sudo adduser araraura

Заключение

Ошибка "sudo: unknown user" и проблемы с инициализацией плагина политики можно устранить через правильное создание пользователей и корректировку конфигураций. Убедитесь, что у вас есть все необходимые пользователи и правильные методы аутентификации в PostgreSQL.

Если вы продолжаем сталкиваться с трудностями, постарайтесь проанализировать логи PostgreSQL, которые могут содержать дополнительную информацию о проблемах, а также перепроверьте настройки sudo и конфигурации системы.

Оцените материал
Добавить комментарий

Капча загружается...