Por que o meu usuário do Postgres não tem permissão para adicionar um banco de dados do Postgres?

2

Primeiro, eu corri:

sudo su postgres
createuser -U postgres foouser -P

que funcionou bem e eu corri:

createdb -U foouser -E utf8 -O foouser foodatabase -T template0

e tem "permissão negada: não é possível criar banco de dados"

Em primeiro lugar, devo su as postgres fazer operações como a primeira (assumindo que meu diretório de dados postgres pertence a postgres ) ou -U postgres de qualquer usuário (supondo que trust seja usado em pg_hba.conf ) suficiente?

Em segundo lugar, por que estou encontrando esse erro? Isso ocorre porque o usuário foouser é um não superusuário? Devo criar foodatabase usando o usuário postgres e simplesmente -O foouser ?

    
por orokusaki 15.12.2012 / 20:19

1 resposta

4

Você está recebendo este erro porque (como você supôs corretamente) foouser não é um superusuário e não tem o privilégio CREATE DATABASE .

Você pode criar o banco de dados como seu superusuário postgres , com foouser como proprietário, que é provavelmente a opção mais sensata.
Alternativamente, você pode tornar foouser um superusuário DB (definitivamente não recomendado) ou conceder a esse usuário o privilégio CREATE DATABASE (também não é realmente recomendado - seus usuários individuais do banco de dados devem ser usuários comuns comuns, Proprietário do banco de dados é o nível mais alto de privilégio deveria ter.)

Geralmente, não aconselho usar as ferramentas de linha de comando do Postgres. Não há nada de errado com eles, mas é preferível usar a linha de comando SQL para interagir com o banco de dados, na minha opinião. A documentação sobre o comando CREATE DATABASE SQL é, IMHO, melhor que a documentação para o equivalente da linha de comando também.

O equivalente em SQL para o que você está fazendo no comando seria:

CREATE DATABASE foodatabase WITH OWNER foouser ENCODING 'utf8' TEMPLATE template0;
    
por 15.12.2012 / 22:00