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 / 106057
Accepted
Emanuele Paolini
Emanuele Paolini
Asked: 2015-07-07 04:53:41 +0800 CST2015-07-07 04:53:41 +0800 CST 2015-07-07 04:53:41 +0800 CST

ERRO: nenhum esquema foi selecionado para criar em

  • 772

Estou trabalhando em um banco de dados postgresql Amazon RDS onde sei que houve algum problema com o esquema público (talvez tenha sido descartado). Mas aparentemente o esquema existe, e de qualquer forma o problema não foi resolvido. Aqui está uma sessão de amostra com um banco de dados vazio recém-criado:

mydb=> CREATE TABLE distributors (
mydb(>     did     integer,
mydb(>     name    varchar(40) UNIQUE
mydb(> );
ERROR:  no schema has been selected to create in
mydb=> show search_path;
  search_path   
----------------
 "$user",public
(1 row)

mydb=> create schema public;
ERROR:  schema "public" already exists

Alguma dica? O que devo procurar?

Resolvido. Graças à resposta de Daniel Vérité resolvi com o seguinte:

grant usage on schema public to public;
grant create on schema public to public;

Essas são as permissões padrão no esquema público?

Eu tenho um único usuário que pode acessar o banco de dados, então acho que isso não pode aumentar os riscos de segurança ...

Acho que devo fazer a mesma modificação no template1 . Está correto? Como posso verificar se as permissões em template1 estão corretas (digamos, valores padrão)?

postgresql schema
  • 5 5 respostas
  • 121191 Views

5 respostas

  • Voted
  1. Best Answer
    Daniel Vérité
    2015-07-07T05:44:54+08:002015-07-07T05:44:54+08:00

    Isso acontece quando não se tem USAGEprivilégio em nenhum dos esquemas do search_path. Por padrão o pseudo-role public(todos os usuários) tem esse privilégio no publicesquema, então esse erro acontece somente após revogá-lo explicitamente com:

    revoke usage on schema public from public;
    

    Isso é necessário quando não é desejável que as pessoas espiem os esquemas de outras pessoas, mesmo sem selecionar dados de tabelas (o que é concedido por meio de diferentes privilégios).

    Se isso REVOKEnão foi feito nesse banco de dados, pode ter acontecido no banco de dados modelo pelo qual novos bancos de dados são modelados (consulte Recursos CREATE DATABASE).


    Quando um usuário tem USAGEprivilégio, mas não tem CREATEprivilégio no esquema, é um erro diferente ao tentar criar um objeto: permissão negada para esquema public .

    Para verificar os privilégios dentro do psql, use \dn+ public.

    Por padrão (mostrado com exibição estendida \xpara facilitar a leitura):

    # \dn+ público
    Lista de esquemas
    -[ REGISTRO 1 ]-----+---------------------------
    Nome | público
    Proprietário | postgres
    Privilégios de acesso | postgres=UC/postgres
                      | =UC/postgres
    Descrição | esquema público padrão
    

    a falta de um nome de função antes =significa que é para todas as funções (= público)

    Sem privilégio de USAGE público

    Nome | público
    Proprietário | postgres
    Privilégios de acesso | postgres=UC/postgres
                      | =C/postgres
    Descrição | esquema público padrão
    

    Sem privilégios públicos USAGE ou CREATE

    Nome | público
    Proprietário | postgres
    Privilégios de acesso | postgres=UC/postgres
    Descrição | esquema público padrão
    
    • 45
  2. Panoptik
    2019-05-25T04:45:27+08:002019-05-25T04:45:27+08:00

    Eu tinha o arquivo pgdump com a criação de funções no esquema personalizado e queria mudar o nome do esquema personalizado para público geral e substituí todas as ocorrências pelo esquema antigo para vazio (por exemplo, myschema.tablename para tablename) E comecei a receber erro

    ERROR:  no schema has been selected to create in
    

    Para o meu caso, o erro acontece quando no início da linha de despejo atual

    SELECT pg_catalog.set_config('search_path', '', false);
    

    Eu mudei o segundo argumento para "público"

    SELECT pg_catalog.set_config('search_path', 'public', false);
    

    E o problema acabou

    • 9
  3. Kostanos
    2020-09-08T11:37:53+08:002020-09-08T11:37:53+08:00

    Eu tentei várias soluções e continuo recebendo o mesmo erro repetidamente.

    Pior que isso, o erro me aparece quando precisei reiniciar a migração do meu banco de dados excluindo o esquema público e após criá-lo novamente.

    A correção foi:

    grant usage on schema public to public;
    grant create on schema public to public;
    
    • 8
  4. JohnEye
    2021-06-22T03:37:17+08:002021-06-22T03:37:17+08:00

    Isso estava acontecendo comigo depois que tentei me conectar a um dump de banco de dados recém-importado com o usuário que criei anteriormente. O que resolveu foi conceder as permissões ao usuário: GRANT ALL ON SCHEMA public TO custom_user;

    • -1
  5. user3579873
    2021-07-24T02:13:43+08:002021-07-24T02:13:43+08:00

    Isso funciona para mim

    grant usage on schema <schema-name> to <user>;
    grant create on schema <schema-name> to <user>;
    
    • -1

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

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 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

    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
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • 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
    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