Права пользователя для создания БД PostgreSQL

24

Я работаю над 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 - это не я.

dinesh707
источник

Ответы:

44

Похоже, у вас есть пользователь базы данных с именем 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

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

qqx
источник
sudo -u postgres psql -c 'alter user USER_NAME with createdb' postgresспас мой день :)
AbdulMomen عبدالمؤمن