Por que não conseguir criar um objeto no banco de dados postgres como um usuário comum?
Sintoma
- Criar um esquema como um usuário comum
Comando: CREATE SCHEMA my_schema;
Erro: ERROR: permission denied for database postgres
- Criar uma tabela como um usuário comum
Comando: CREATE TABLE my_table(id int PRIMARY KEY,name VARCHAR(30));
ERROR: permission denied for schema public
Solução
Um usuário comum não pode criar objetos no banco de dados postgres, mas um usuário root pode.
Alterne para o usuário root e assegure-se de que o kernel do banco de dados permita o escalonamento de privilégios de root. Para mais detalhes, consulte Privilégios do usuário root.
Privilégios do usuário root
O RDS for PostgreSQL não fornece permissões de superusuário, mas fornece permissões para o usuário root.
Para criar objetos em um banco de dados RDS for PostgreSQL sem riscos de operação, escalone sua conta para privilégios de root quando necessário.
A tabela a seguir descreve a escalação de privilégio raiz em diferentes versões.
Versão |
Se a escalar privilégios |
Versão inicial para escalonamento de privilégios |
---|---|---|
Pgcore9 |
Não |
N/D |
Pgcore10 |
Não |
N/D |
Pgcore11 |
Sim |
11.11 |
Pgcore12 |
Sim |
12.6 |
Pgcore13 |
Sim |
13.2 |
Pgcore14 |
Sim |
14.4 |
Escalone para privilégios de root quando precisar:
- Criar um gatilho de evento.
- Criar um wrapper.
- Criar uma publicação de replicação lógica.
- Criar uma assinatura de replicação lógica.
- Consultar e manter origens de replicação.
- Criar um usuário de replicação.
- Criar um modelo de índice de texto completo e um analisador.
- Executar o comando vacuum em uma tabela do sistema.
- Executar o comando analyze em uma tabela do sistema.
- Criar um plug-in.
- Conceder uma permissão de objeto a um usuário.