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 / 56023
Accepted
user664833
user664833
Asked: 2014-01-03 11:55:02 +0800 CST2014-01-03 11:55:02 +0800 CST 2014-01-03 11:55:02 +0800 CST

Qual é o search_path para um determinado banco de dados e usuário?

  • 772

Eu posso ver a corrente search_pathcom:

show search_path ;

E eu posso definir o search_pathpara a sessão atual com:

set search_path = "$user", public, postgis;

Além disso, posso definir permanentemente o search_pathpara um determinado banco de dados com:

alter database mydb set search_path = "$user", public, postgis ;

E posso definir permanentemente o search_pathpara uma determinada função (usuário) com:

alter role johnny set search_path = "$user", public, postgis ;

Mas eu gostaria de saber como determinar quais são as configurações do banco de dados e da funçãosearch_path (com relação a ) antes de alterá-las?

postgresql configuration
  • 3 3 respostas
  • 156182 Views

3 respostas

  • Voted
  1. Best Answer
    Erwin Brandstetter
    2014-01-03T16:56:11+08:002014-01-03T16:56:11+08:00

    Você pode encontrar as definições de configuração para funções e bancos de dados na tabela de catálogo pg_db_role_setting.

    Esta consulta recupera quaisquer configurações para uma determinada função ou banco de dados:

    SELECT r.rolname, d.datname, rs.setconfig
    FROM   pg_db_role_setting rs
    LEFT   JOIN pg_roles      r ON r.oid = rs.setrole
    LEFT   JOIN pg_database   d ON d.oid = rs.setdatabase
    WHERE  r.rolname = 'myrole' OR d.datname = 'mydb';
    

    Se nada for definido, a próxima instância inferior determinará o estado padrão do search_path, que é postgresql.confneste caso ou opções de linha de comando na inicialização do servidor. Relacionado:

    • Como o search_path influencia a resolução do identificador e o “esquema atual”

    Para anular quaisquer configurações de uma função ou banco de dados - search_pathneste exemplo específico:

    ALTER ROLE myrole RESET search_path;
    

    Ou:

    ALTER DATABASE mydb RESET search_path;
    

    Ou:

    ALTER ROLE myrole in DATABASE mydb RESET search_path;
    

    Nunca manipule dados no catálogo do sistema ( pg_catalog.*) manualmente. Use os comandos DDL conforme instruído no manual para ALTER ROLEe ALTER DATABASE.
    Essencialmente, o RESETcomando exclui uma linha de pg_db_role_settingpermitir que a configuração básica entre em vigor novamente. Eu não chamaria isso de complicado.

    • 70
  2. Daniel Vérité
    2014-01-03T16:49:49+08:002014-01-03T16:49:49+08:00

    As configurações permanentes para bancos de dados e funções são armazenadas na tabela de todo o cluster do sistema pg_db_role_settings .

    Somente as configurações passadas para ALTER USERe ALTER DATABASEestão presentes nesta tabela. Para obter os valores configurados além desses comandos:

    • O valor da configuração antes de qualquer alteração, inclusive no nível do cluster (por meio da configuração global postgresql.conf) pode ser consultado no banco de dados com:

       SELECT boot_val FROM pg_settings WHERE name='search_path';
      
    • O valor da configuração anterior a qualquer alteração na sessão (através do SETcomando) pode ser consultado no banco de dados com:

       SELECT reset_val FROM pg_settings WHERE name='search_path';
      
    • Quando é definido um valor não padrão em postgresql.conf, não é simples obter esse valor em SQL independentemente da sessão atual . pg_settings.boot_valnão funcionará porque ignora as alterações no arquivo de configuração e pg_settings.reset_valtambém não, porque é influenciado pelas configurações do banco de dados/usuário potencialmente definidas por meio do ALTER USER/ALTER DATABASE. A maneira mais simples para um DBA obter o valor é apenas procurá-lo no postgresql.conf. Caso contrário, consulte Redefinir search_path para o padrão global do cluster, que aborda esse tópico em detalhes.

    • 10
  3. Merlin
    2017-12-10T21:04:09+08:002017-12-10T21:04:09+08:00
    select * from pg_user;
    

    Verdadeiro para postgres e Redshift. Isso parece muito simples em comparação com as respostas anteriores que dependem de pg_db_role_setting, mas a useconfigcoluna terá uma lista de configurações de usuário incluindo search_path, formatada como uma lista.

    A documentação do pg_user Postgres está aqui

    Para ser mais seletivo:

    rs.db.batarang.com cooldb:cooldude =#> select usename
                                                  , useconfig 
                                           from   pg_user
                                           where  usename = 'cooldude';
    ┌────────────┬─────────────────────────────────────────────────────┐
    │  usename   │                      useconfig                      │
    ├────────────┼─────────────────────────────────────────────────────┤
    │ cooldude   │ {"search_path=dirt, test, \"$user\", public, prod"} │
    └────────────┴─────────────────────────────────────────────────────┘
    

    Acho que essa tabela de usuários contém todos os usuários no cluster, não apenas o banco de dados específico - mas não verifiquei isso.

    • 7

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