prostranstvovremya
@prostranstvovremya

Как создать БД от имени роли, имя которой не соответствует юзеру в Линукс?

Чтобы создать базу данных от имени роли необходимо прежде всего зайти в эту роль. Чтобы зайти в роль, необходимо либо иметь аккаунт в Линуксе с именем, соответствующим роли в БД, либо указать:
> psql -U rolename -h 127.0.0.1 -d databasename,
где databasename имя несуществующей базы данных, которую я только хочу создать от этого пользователя. Без указания этого параметра (psql -U rolename -h 127.0.0.1) я получаю:
> psql: FATAL: database "eighthost" does not exist.

Знаю, что есть способ создать БД через роль postgres и назначить OWNER'ом мою новую роль, либо создать юзера в Линуксе с именем роли и по идентичной аутентификации выполнить вход, но для расширения и лучшего понимания вопроса решил узнать:
Возможно ли авторизоваться в PostgreSQl под новой ролью без созданной БД и без аккаунта под линуксом?
  • Вопрос задан
  • 196 просмотров
Решения вопроса 1
Melkij
@Melkij
PostgreSQL DBA
Аккаунт ОС не имеет никакого отношения к пользователю БД. База может быть настроена проверять подлинность пользователя по соответствию имени пользователя - peer для unix sock. Но это не обязательно и это единственное что может связывать пользователя ОС и базу. (кроме учётки владельца, у того есть доступ напрямую к файлам)

Но пользователь базы должен уже существовать. А раз вам нужно создать сперва пользователя - то тогда же создайте и базу для него.

Далее следует сказать, что рядовой пользователь вовсе не может создавать базы данных. Это право должно быть выдано явно.
Подключиться к postgresql можно только к конкретной уже существующей БД и у вашего пользователя должны быть права как на прохождение аутентификации указанным в hba методом так и права на подключение к нужной базе.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы