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 serpeer
authentication oumd5
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
ouhostnossl
, provavelmente você deseje usarmd5
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 paralocal
conexões de tipo.
Eu aconselho que você leia a documentação vinculada no arquivo pg_hba.conf
, é uma explicação melhor das coisas.