Eu tentei executar o comando sql simples:
select * from site_adzone;
e eu recebi esse erro
ERROR: permission denied for relation site_adzone
Qual poderia ser o problema aqui?
Tentei também selecionar para outras tabelas e obtive o mesmo problema. Eu também tentei fazer isso:
GRANT ALL PRIVILEGES ON DATABASE jerry to tom;
mas eu recebi essa resposta do console
WARNING: no privileges were granted for "jerry"
Você tem alguma idéia do que pode estar errado?
Respostas:
GRANT no banco de dados não é o que você precisa. Conceda diretamente nas mesas.
A concessão de privilégios no banco de dados é usada principalmente para conceder ou revogar privilégios de conexão. Isso permite que você especifique quem pode fazer coisas no banco de dados se eles tiverem outras permissões suficientes.
Você deseja:
Isso resolverá esse problema.
fonte
Postar Ron E responder por privilégios concedidos em todas as tabelas, pois pode ser útil para outras pessoas.
fonte
ALL SEQUENCES
eALL FUNCTIONS
.ALL TABLES
também inclui pontos de vista, por isso não há separadoALL VIEWS
comando :-)Conecte-se ao banco de dados correto primeiro e execute:
fonte
\connect databasename;
fonte
O primeiro e importante passo é conectar-se ao seu banco de dados:
2 passo, conceder privilégios
fonte
Para conceder permissões a todas as tabelas existentes no esquema, use:
Para especificar permissões padrão que serão aplicadas a tabelas futuras, use:
por exemplo
Se você usar
SERIAL
ouBIGSERIAL
colunas, provavelmente desejará fazer o mesmoSEQUENCES
, caso contrário o seuINSERT
falhará (o Postgres 10IDENTITY
não sofre com esse problema e é recomendado sobre osSERIAL
tipos), ou seja,Consulte também minha resposta para as permissões do PostgreSQL para Web App para obter mais detalhes e um script reutilizável.
Ref:
CONCEDER
ALTERAR PRIVILÉGIOS PADRÕES
fonte
Isso acontece frequentemente quando você cria uma tabela como usuário postgres e tenta acessá-la como um usuário comum. Nesse caso, é melhor efetuar login como usuário do postgres e alterar a propriedade da tabela com o comando:
fonte
Certifique-se de fazer login no psql como o proprietário das tabelas. para descobrir quem é o dono das tabelas
\dt
psql -h CONNECTION_STRING DBNAME -U OWNER_OF_THE_TABLES
então você pode executar os GRANTS
fonte
Como você está procurando por permissões de seleção, sugiro que você conceda apenas privilégios de seleção e não todos. Você pode fazer isso:
fonte
Você deve:
fonte
Fui confrontado com este problema uma vez. basta alterar o usuário do banco de dados para um superusuário e seu problema será resolvido.
ALTER USUÁRIO myuser WITH SUPERUSER;
fonte