- Вопрос или проблема
- Ответ или решение
- Ошибка при работе с psql на сервере Ubuntu 20.04: "sudo: unknown user" и "sudo: unable to initialize policy plugin"
- 1. Понять ошибки
- 2. Проверка наличия пользователя
- 3. Работа с PostgreSQL
- Исправление конфигурации pg_hba.conf
- 4. Создание базы данных и пользователей
- 5. Проверьте права доступа к пользователям
- Заключение
Вопрос или проблема
Я работаю над ботом для 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
можно редактировать для изменения методов аутентификации.
- Откройте файл
pg_hba.conf
в текстовом редакторе:
sudo nano /etc/postgresql/12/main/pg_hba.conf
- Найдите строку, которая выглядит как:
#local DATABASE USER ADDRESS METHOD [OPTIONS]
- Удалите
#
в начале строки, чтобы раскомментировать её, и измените её на:
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
и конфигурации системы.