Autorização do usuário do PostgreSQL / problemas de configuração

0

Instalei o postgresql 9.3, mas não consigo usuários autorizados. Eu também não posso usar o initdb ou o pg_ctl. Eu não consigo encontrar o pg_hba.conf também.

    
por Brian Cady 08.07.2015 / 00:05

1 resposta

0

Onde o arquivo pg_hba.conf reside:

pg_hba.conf está em /etc/postgresql/X.Y/main/ (onde X.Y é sua versão, 9,3 para você, 9,4 para mim).

Programas "ausentes":

pg_ctl pode não ser instalado por padrão. initdb também pode não ser instalado por padrão. Ambos são instaláveis por postgres-xc .

Adicionando usuários para que eles possam ser autorizados:

Você terá que adicionar um usuário / função através do cliente de linha de comando psql . Você terá que adicionar o usuário a pg_hba.conf .

Sugiro usar pgadmin3 , uma interface / programa gráfico, para trabalhar com funções de usuário e adicioná-las. Ele permite que você selecione especificamente as permissões individuais que você deseja conceder a um usuário globalmente (que geralmente não devem ser permissões especiais, apenas para criar o usuário e dar permissões para um determinado banco de dados separadamente).

Configurando pg_hba.conf

Isso pode ser um pouco complicado. Assim que tiver uma função de login de usuário, você precisará adicioná-las a pg_hba.conf . O formato do arquivo é totalmente explicado em detalhes na documentação do PosgreSQL . Um pequeno resumo está aqui.

A menos que haja uma linha correspondente aqui, a regra de acesso padrão é "negar acesso".

Este é o formato de uma linha pg_hba.conf :

TYPE DATABASE USER ADDRESS METHOD

type é o tipo de conexão. Conexões locais do mesmo computador obtêm o tipo local . Conexões de um IP não local (ou seja, sobre TCP) obtêm o tipo host . hostnossl pode ser usado, e identificará qualquer conexão de rede (isto é, não local) que não seja sobre SSL. hostssl pode ser usado para especificar qualquer conexão de rede que seja através de SSL, no entanto, não é padrão ter o SSL configurado.

database é auto-explicativo - para qual banco de dados você deseja definir essas permissões / restrições de acesso. Um tipo de banco de dados especial é all , o que indica todos os bancos de dados.

user é o nome de usuário / função que você adicionou ao Postgres. Tem que existir dentro do postgres, e pode precisar existir como um usuário do sistema local (no entanto, isso é explicado em onde eu explico o METHOD ).

ADDRESS é um endereço ou intervalo IPv4 ou IPv6. É apenas para ser usado quando host , hostnossl ou hostssl são especificados em type . Pode ser um intervalo CIDR ou um endereço IP individual.

METHOD é como tratar a autenticação.

  • Para um usuário local com o tipo local , ele deve ser peer authentication ou md5 authentication se você quiser que o usuário possa fazer login de uma conta de usuário de computador local diferente com uma senha.
  • Para um tipo de conexão host , hostssl ou hostnossl , provavelmente você deseje usar md5 aqui, no entanto, você pode ter outros tipos de autenticação (consulte o link da documentação acima).
  • Sob nenhuma circunstância, a menos que você seja louco ou realmente saiba o que está fazendo, use o método trust . Isso tem zero autenticação da pessoa e é uma falha de segurança do Inferno, mesmo para local conexões de tipo.

Eu aconselho que você leia a documentação vinculada no arquivo pg_hba.conf , é uma explicação melhor das coisas.

    
por Thomas Ward 08.07.2015 / 00:21