23

Я работаю над Ubuntu. Ниже приводится одна из моих команд.

$ psql -U kuser -d postgres

Затем это подключается к базе данных. Но из терминала Postgres, когда я пытаюсь

postgres=> CREATE DATABASE kdb;
ERROR:  permission denied to create database

Когда я пытаюсь подобную команду в Ubuntu, это дает следующее

$ sudo -u kuser createdb kdb
sudo: unknown user: kuser
sudo: unable to initialize policy plugin

Как мне создать эту БД? У меня есть права sudo, а kuser - это не я.

1 ответ1

43

Похоже, у вас есть пользователь базы данных с именем kuser , но нет системного пользователя с таким именем. Вот почему вы можете получить приглашение postgres, но sudo не работает.

Этот пользователь не может создать базу данных, потому что у учетной записи нет разрешения createdb .

Вы можете предоставить это разрешение пользователю, используя учетную запись postgres (учетная запись управления по умолчанию в Ubuntu):

sudo -u postgres psql -c 'alter user kuser with createdb' postgres

Или просто используйте эту учетную запись управления для создания базы данных и укажите, что она принадлежит учетной записи kuser :

sudo -u postgres createdb -O kuser kdb

Если этот пользователь не будет создавать другие базы данных, я бы посоветовал использовать последний вариант, лучше ограничить привилегии, которые предоставляются учетной записи.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .