Permissões de usuário para criar o banco de dados PostgreSQL

24

Estou trabalhando no Ubuntu. A seguir é um dos meus comandos.

$ psql -U kuser -d postgres

Então isso se conecta ao banco de dados. Mas do terminal postgres quando tento

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

Quando tento um comando semelhante no Ubuntu, ele fornece o seguinte

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

Como crio esse banco de dados? Eu tenho direitos sudo e o kuser não sou eu.

dinesh707
fonte

Respostas:

44

Parece que você tem um usuário de banco de dados chamado kuser, mas não há usuário do sistema com esse nome. É por isso que você é capaz de obter um prompt do postgres, mas o sudo falha.

Esse usuário não pode criar um banco de dados porque a conta não tem createdbpermissão.

Você pode conceder essa permissão ao usuário usando a postgresconta (a conta de gerenciamento padrão no Ubuntu):

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

Ou apenas use essa conta de gerenciamento para criar o banco de dados e especifique que ele pertence à kuserconta:

sudo -u postgres createdb -O kuser kdb

Se esse usuário não criar outros bancos de dados, aconselho usar a última opção, melhor limitar os privilégios concedidos à conta.

qqx
fonte
sudo -u postgres psql -c 'alter user USER_NAME with createdb' postgressalvei meu dia :)
AbdulMomen