AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 53914
Accepted
if __name__ is None
if __name__ is None
Asked: 2013-11-26 09:08:36 +0800 CST2013-11-26 09:08:36 +0800 CST 2013-11-26 09:08:36 +0800 CST

Permissão negada para relação <table>

  • 772

Eu executei o seguinte SQL no psql:

CREATE USER bspu LOGIN;

CREATE DATABASE bsp OWNER bspu;

GRANT ALL PRIVILEGES ON DATABASE bsp TO bspu;

\c bsp

CREATE TABLE users (
  id SERIAL PRIMARY KEY,
  client_id VARCHAR(20) NOT NULL,
  api_key VARCHAR(100) NOT NULL,
  api_secret VARCHAR(100) NOT NULL,
  auth_token VARCHAR(128) NOT NULL
);

Quando faço login como bspue tento consultar a userstabela, recebo o erro:

permission denied for relation users

Tentei executar:

ALTER DEFAULT PRIVILEGES GRANT ALL ON TABLES TO bspu;

Mas isso não ajuda. O que estou fazendo errado? Por que o proprietário do banco de dados NÃO tem permissões para consultar seu próprio banco de dados?

EDIT: atualizei bspupara superusuário por enquanto, para poder continuar trabalhando. Qualquer orientação adicional apreciada.

postgresql permissions
  • 3 3 respostas
  • 138065 Views

3 respostas

  • Voted
  1. Best Answer
    Erwin Brandstetter
    2013-11-26T16:48:32+08:002013-11-26T16:48:32+08:00

    DEFAULT PRIVILEGESnão altere as permissões para objetos existentes . Eles são os privilégios padrão para objetos recém-criados e apenas para a função específica a que pertencem. Se você não especificar a função ao executar ALTER DEFAULT PRIVILEGES, o padrão será a função atual (ao executar a ALTER DEFAULT PRIVILEGESinstrução.

    Além disso, como você está usando uma serialcoluna, que cria um SEQUENCE, convém definir também os privilégios padrão para as sequências.

    Execute isso no usuário com o qual você cria objetos, antes de executar o CREATEcomando:

    ALTER DEFAULT PRIVILEGES [ FOR ROLE my_create_role] GRANT ALL ON TABLES TO bspu;
    ALTER DEFAULT PRIVILEGES [ FOR ROLE my_create_role] GRANT ALL ON SEQUENCES TO bspu;
    

    Uma palavra de cautela para os usuários do pgAdmin. Há um bug em todas as versões do pgAdmin III e pgAdmin4 (incluindo v5.3). O script SQL de engenharia reversa para os nós do banco de dados ou do esquema é exibido DEFAULT PRIVILEGESignorando o usuário proprietário e, portanto, está incorreto em determinadas situações. Relatei o bug (repetidamente) , mas o projeto encontrou dificuldades para corrigi-lo. pgAdmin III foi descontinuado em favor de pgAdmin4. O bug ainda está lá no pgAdmin4.

    Para objetos existentes , você também pode estar interessado nesta forma de "lote" do GRANTcomando :

    GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO bspu;
    GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO bspu;
    

    Mais sob esta pergunta relacionada no SO:

    • Conceda tudo em um esquema específico no banco de dados a uma função de grupo no PostgreSQL
    • 41
  2. Srinu Mareti
    2020-02-07T15:26:39+08:002020-02-07T15:26:39+08:00
    This is working for me after some research. psql (9.6.12)
    
    -- login to postgres database server as postgres user.
    ssh <user>>@hostname.<domain>>.com
    sudo su postgres
    id
    psql
    postgres=# create user sentry_read with login password 'sentry_read';
    postgres=# du+
    postgres=# \l+
    -- **very important: make sure we should connect required database before we grant to user.**
    postgres=# \c sentry
    postgres=# \dt
    sentry=# \dp SENTRY_VERSION
    sentry=# select * from "SENTRY_VERSION";
    sentry=# GRANT SELECT ON ALL TABLES IN SCHEMA public TO sentry_read;
    postgres=# \q
    
    [user@hostname ~]$ psql -U sentry_read -d sentry -h hostname.<domain>>.com -W
    sentry=> select * from "SENTRY_VERSION";
    
    • 0
  3. Sandy
    2021-07-30T02:29:46+08:002021-07-30T02:29:46+08:00

    Se o erro

    ERROR:  permission denied for relation migrations
    

    aparece ao tentar fazer uma GRANT ACTION,

    example:GRANT SELECT ON ALL TABLES IN SCHEMA schema_name to ro_user;
    

    garantir que a GRANT seja realizada pelo usuário proprietário das respectivas tabelas. O proprietário dos esquemas pode variar em um banco de dados. Mesmo o usuário postgres não terá permissão para fornecer este acesso GRANT.

    • 0

relate perguntas

  • Posso ativar o PITR depois que o banco de dados foi usado

  • Práticas recomendadas para executar a replicação atrasada do deslocamento de tempo

  • Os procedimentos armazenados impedem a injeção de SQL?

  • Sequências Biológicas do UniProt no PostgreSQL

  • Qual é a diferença entre a replicação do PostgreSQL 9.0 e o Slony-I?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Conceder acesso a todas as tabelas para um usuário

    • 5 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    pedrosanta Listar os privilégios do banco de dados usando o psql 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve