systemadmin.es > DBA > Crear usuario con acceso remoto en PostgreSQL (pg_hba.conf)

Crear usuario con acceso remoto en PostgreSQL (pg_hba.conf)

En postgreSQL a parte de definir un usuario y su contraseña, deberemos habilitar el acceso remoto mediante el fichero pg_hba.conf para que el usuario se pueda autenticar contra la base de datos.

Para crear el usuario tenemos la herramienta createuser:

$ createuser test1
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) n
Shall the new role be allowed to create more new roles? (y/n) n

Y mediante la opción -P podemos definirle directamente el password:

$ createuser -P test1
Enter password for new role: 
Enter it again: 
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) n
Shall the new role be allowed to create more new roles? (y/n) n

O bien lo podemos hacer mediante comandos SQL:

postgres=# CREATE ROLE test2 NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT LOGIN;
CREATE ROLE
postgres=# ALTER ROLE test2 WITH PASSWORD 'testtest';
ALTER ROLE

A continuación, con el usuario creado, deberemos habilitar el acceso remoto mediante el fichero pg_hba.conf. Por defecto tendremos:

# TYPE  DATABASE        USER            ADDRESS                 METHOD
# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5

Esto habilita el acceso desde socket (local) mientras que las conexiones TCP (host) desde localhost deben ser autenticadas mediante el envio del hash de la contraseña en md5. Por lo tanto, para habilitar el acceso desde una red determinada simplemente añadimos dicha red con la opción de contraseña:

host    all             all             192.168.1.0/24            md5

Podemos incluso definir que se acceda directamente sin contraseña mediante la opción trust en lugar de md5:

host    all             all             192.168.1.0/24            trust

De la misma forma, podemos definir que no se permita el acceso desde una determinada red incondicionalmente mediante la opción reject:

host    all             all             192.168.1.0/24            reject

Deja un comentario:

XHTML - Tags permitidos:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>