Diferença entre “confiança” e “ident” do postgreSQL?

2

Em /var/lib/pgsql/data/pg_hba.conf trust e ident do postgreSQL pode ser definido como method , por ex. assim.

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
local   all         postgres                          trust
host    all         postgres    127.0.0.1/32          trust

Eu estava com a impressão de que a diferença dos dois era com trust I, como root poderia fazer

psql postgres

e com ident tive que

sudo -u postgres psql postgres

No entanto, não consigo fazer o primeiro comando funcionar mesmo com trust .

Pergunta

Alguém pode explicar qual é a diferença de trust e ident ?

    
por Sandra 12.06.2013 / 16:29

2 respostas

4

"Confiança" significa "qualquer nome de usuário que o cliente use, você não precisa pedir uma senha para verificar o usuário".

"Ident" significa "aceitar o que o identd retorna como o nome de usuário, sem pedir uma senha para verificar".

Há mais informações sobre os diferentes métodos de autenticação no site postgresql .

Para descobrir por que essa conexão em particular falhou, você precisa verificar os logs postgresql. Pode ser que o nome de usuário que você está usando não exista no banco de dados postgres, ou pode ser algum outro problema - é impossível dizer sem antes olhar os logs.

    
por 12.06.2013 / 16:51
3

psql precisa se conectar a um banco de dados com o nome de usuário de um banco de dados. Quando não é especificado com a opção -U , ele usa o nome de usuário do SO como um valor padrão.

Então, na verdade, psql dbname é equivalente a psql -U $USER dbname

Como resultado, quando você está logado como root e não criou um usuário do banco de dados chamado root , isso normalmente produz o seguinte erro, mesmo se o modo de autenticação for trust .

# psql postgres
psql: FATAL: role "root" does not exist

Por outro lado, funcionaria se fosse invocado desta forma, ainda logado como root:

# psql -U postgres postgres

que está OK porque o banco de dados chamado postgres e o usuário denominado postgres existem, já que são criados automaticamente durante a instalação do PostgreSQL.

    
por 12.06.2013 / 20:26