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 / 36870
Accepted
Aslan986
Aslan986
Asked: 2013-03-18 06:32:15 +0800 CST2013-03-18 06:32:15 +0800 CST 2013-03-18 06:32:15 +0800 CST

Permissão negada no Postgres [duplicado]

  • 772
Essa pergunta já tem respostas aqui :
Concedendo acesso a todas as tabelas para um usuário (5 respostas)
Como gerenciar DEFAULT PRIVILEGES para USERs em um DATABASE vs SCHEMA? (1 resposta)
Fechado há 5 anos .

Eu adicionei o usuário myuserao Postgres.

Em seguida, adicionei o banco de dados mydatabasena GUI do pgAdmin III e restaurei a partir de um arquivo de backup. Portanto, o proprietário de mydatabaseé o superusuário postgres.

Então tentei dar todos os direitos de acesso e modificação mydatabasepara myuser. Entrei psqlcomo usuário postgres:

psql -d template1 -U postgres  

e então eu executei esta consulta:

GRANT ALL PRIVILEGES ON DATABASE mydatabase TO myuser

Agora eu posso usar myuserpara logar, mas se eu tentar uma consulta simples, recebo este erro:

ERROR:  permission denied for relation table_name

Estou esquecendo de algo? Você pode me ajudar a resolver isso?

postgresql permissions
  • 3 3 respostas
  • 157168 Views

3 respostas

  • Voted
  1. Best Answer
    Gord Thompson
    2013-03-18T07:07:23+08:002013-03-18T07:07:23+08:00

    Você concedeu privilégios CREATE, CONNECT, e TEMPORARYno banco de dados, myusermas ainda não concedeu privilégios SELECTde INSERTtabela. Você vai precisar de algo como:

    GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO myuser;
    

    Além disso, você precisa de privilégios em sequências se tiver colunas seriais ou outros padrões de coluna extraídos de sequências. Geralmente, o USAGEprivilégio é suficiente para INSERTque as operações funcionem, mas como você pediu "give all rights":

    GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO myuser;
    

    Detalhes no GRANTmanual.

    • 43
  2. Erwin Brandstetter
    2013-03-18T10:13:47+08:002013-03-18T10:13:47+08:00

    Use o comando fornecido por @Gord para objetos já existentes .

    Você provavelmente vai querer conceder DEFAULT PRIVILEGEStambém. Assim, seu usuário myusertambém pode acessar objetos futuros automaticamente.

    Pode ser feito por esquema :

    ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON TABLES TO myuser;
    

    Se você omitir o esquema, ele se aplica a todo o banco de dados:

    ALTER DEFAULT PRIVILEGES GRANT ALL ON TABLES TO myuser;
    

    Aplica-se apenas a objetos criados pela função especificada (padrão para a função que executa este comando):

    ALTER DEFAULT PRIVILEGES FOR ROLE administrator GRANT IN SCHEMA public ... ;
    

    Disponível desde o PostgreSQL 9.0.
    Não se esqueça de GRANTprivilégios SEQUENCESem adição, se você tiver algum. (Por exemplo, como fonte para valores padrão em uma coluna serial.)

    • 13
  3. Stephen Frost
    2017-02-21T18:44:54+08:002017-02-21T18:44:54+08:00

    Embora as outras respostas a esta pergunta estejam corretas, permita-me propor outra opção. Quando um banco de dados é restaurado, você pode controlar o usuário com o qual o banco de dados é restaurado. Não tenho certeza sobre os detalhes de como fazer isso com o pgAdmin3, mas os utilitários pg_dump e pg_restore incluem opções específicas para permitir que isso seja feito.

    Se você usar pg_dump --no-owner, o arquivo de despejo não incluirá nenhuma restauração de propriedade. Quando você restaura um dump criado usando --no-owner, o usuário que você usou para fazer a restauração será o proprietário de todos os objetos. Se você tiver um arquivo de despejo de formato personalizado e estiver usando pg_restore, poderá usar a --no-owneropção com pg_restore para que ele ignore qualquer restauração de propriedade ao restaurar o banco de dados.

    Observe que isso exigirá que o usuário que está fazendo a restauração tenha os direitos necessários no banco de dados para criar os objetos que existem no arquivo de despejo. De um modo geral, conceder "CREATE" no nível do banco de dados ao usuário que está fazendo a restauração será suficiente.

    • 2

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