Cómo instalar PostgreSQL en Debian 10 Buster

Cómo instalar PostgreSQL en Debian 10 Buster

En esta entrada vamos a ver cómo instalar PostgreSQL en Debian 10 Buster paso a paso. Este sistema de bases de datos es bastante popular ya que muchas aplicaciones lo usan como soporte de sus datos. Por eso, al final de esta guía de instalación habrás dejado instalado el servicio PostgreSQL y creado tu propio usuario administrador para trabajar y administrar usuarios y bases de datos sobre tu servidor o VPS Debian .

Antes de instalar PostgreSQL en Debian 10

Si quieres seguir esta guía de instalación de PostgreSQL en Debian 10 Buster debes cumplir estos mínimos requisitos:

  • Tener un sistema Debian 10 actualizado.
  • Estar conectado a Internet para poder descargar los paquetes necesarios.
  • Acceder a línea de comandos con un usuario con privilegios de sudo o ser root.

Si estás leyendo este tutorial es porque seguramente ya cumples estos requerimientos, así que sin más preámbulos pasamos a la acción.

Cómo instalar PostgreSQL en Debian 10

Para instalar PostgreSQL Server en Debian 10 usaremos los repositorios oficiales de la distribución, así que lo habitual es acutalizar la información de las listas de paquetes:

~$ sudo apt update

Ya tenemos listo el sistema para recibir nuevos paquetes, así que podemos instalar PostgreSQL mediante apt. El paquete que necesitamos es postgresql:

~$ sudo apt -y install postgresql

Una vez descargado e instalado PostgreSQL junto con todas sus dependencias se crea un nuevo servicio, postgresql.service o postgresql, puedes usar ambos nombres indistintamente.

En Debian 10, a diferencia de otros sistemas, la instalación de PostgreSQL deja el servicio en ejecución, listo para aceptar conexiones. Además queda también activado para que arranque automáticamente con el inicio de la máquina.

Puedes comprobar que el servicio está funcionando mediante el comando systemctl status postgresql:

como instalar postgresql en debian 10 buster

Cómo conectar con PostgreSQL en Debian 10 desde consola

Para poder conectar desde consola con el servicio PostgreSQL debe existir un rol (usuario de PostgreSQL) con el mismo nombre que el usuario de Debian 10 que intenta conectar.

Durante la instalación se crea un grupo y usuario postgres que son bajo los que corre el sevidor PostgreSQL. Igualmente se crea un rol llamado postgres. Por tanto, inicialmente, el único usuario que puede conectar con PostgreSQL sería el usuario postgres, y esto sólo puede hacerse a través de sudo.

Vamos a usar este usuario postgres para crear un nuevo rol de PostgreSQL con el mismo nombre que nuestro usuario de Debian 10.

En primer lugar, crearemos el rol con el comando createuser. Usaremos el argumento –interactive para que se nos pregunte si el nuevo rol debe ser administrador. Así podremos crear nuevos roles sin tener que volver a usar el usuario postgres:

~$ sudo -u postgres createuser --interactive
Ingrese el nombre del rol a agregar: chacho
¿Será el nuevo rol un superusuario? (s/n) s

Ya tenemos un nuevo rol administrador de PostgreSQL, pero aún nos falta un detalle: para poder conectar con el rol, debe existir una base de datos asociada al rol con su mismo nombre. Como acabamos de crear un rol administrador con el nombre de nuestra cuenta de usuario de Debian 10, podemos utilizarlo para crear la base de datos que necesitamos con el comando createdb: sin necesidad de hacer sudo con el usuario postgres:

~$ createdb chacho

Ahora sí tenemos todo lo que necesitamos para poder trabajar con nuestro propio usuario desde consola con el cliente de PostgreSQL, el comando psql:

~$ psql
psql (11.9 (Debian 11.9-0+deb10u1))
Digite «help» para obtener ayuda.

chacho=#

Dentro del cliente podemos ver la versión del servidor (11.9) y un mensaje que nos invita a usar el comando help para obtener ayuda. En este punto ya puedes trabajar con sentencias SQL para crear tablas, introducir datos, realizar consultas, etc.

Para salir del cliente psql usa el comando \q o exit.

Cómo configurar PostgreSQL en Debian 10 Buster

Al configurar PostgreSQL en Debian 10 Buster es importante saber que los archivos de configuración se organizan bajo la ruta /etc/postgresql/, concretamente para la versión actual sería la ruta /etc/postgresql/11/main/.

Vamos a ver cómo realizar alguna tarea de configuración concreta a continuación.

Cómo configurar el acceso por contraseña en PostgreSQL

Como habrás podido comprobar, hemos podido acceder tanto con el usuario postgres como con nuestro propio usuario sin que en ningún momento se nos solicite contraseña alguna, lo que no es muy seguro. Además, muchas aplicaciones de terceros que trabajan con PostgreSQL esperan que la autenticación por contraseña esté activada.

Antes de hacer activar la autenticación deberíamos crear las contraseñas necesarias, conectando al servicio con el rol al que quieras poner contraseña y usando el comando \password:

...
chacho=# \password
Ingrese la nueva contraseña:
Ingrésela nuevamente:
chacho=#

Además, si conectamos con un rol administrador, podemos asignar contraseñas a otros roles empleando el mismo comando:

...
chacho=# \password paco
Ingrese la nueva contraseña:
Ingrésela nuevamente:
chacho=#

El hecho de crear contraseñas por sí mismo no tiene ningún efecto, ya que hay que reconfigurar PostgreSQL para activar la autenticación. Para ello editaremos el archivo pg_hba.conf:

~$ sudo nano /etc/postgresql/11/main/pg_hba.conf

Buscaremos esta sección:

...
# Database administrative login by Unix domain socket
local   all             postgres                                peer

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
...

Si quieres mantener el comportamiento por defecto del rol postgres, es decir, sin el uso de contraseña, cambiaremos el valor peer por md5 sólo en la segunda directiva local:

...
# "local" is for Unix domain socket connections only
local   all             all                                     md5
...

Si quieres que postgres también use contraseña entonces o bien puedes cambiar el valor peer en su directiva local o puedes desactivar esta mediante un carácter # al inicio de línea, ya que la segunda línea local se refiere a todos los roles (incluyendo a postgres):

...
# Database administrative login by Unix domain socket
#local   all             postgres                                peer
...

Si has decidido que postgres use contraseña deberás crearla antes de hacer estos cambios, o después si has creado algún otro rol administrador.

Una vez guardados los cambios es necesario reiniciar el servicio PostgreSQL para activarlos:

~$ sudo systemctl reload postgresql

Ahora, al tratar de acceder con el cliente psql se solicita la contraseña:

~$ psql
Contraseña para usuario chacho:
psql (11.9 (Debian 11.9-0+deb10u1))
Digite «help» para obtener ayuda.

chacho=# exit

A partir de este momento puedes crear la contraseña en el momento de crear el rol con el comando createuser:

~$ createuser -P pepe
Ingrese la contraseña para el nuevo rol:
Ingrésela nuevamente:
Contraseña:

Primero se pide la contraseña y su confirmación para el nuevo rol y seguidamente la contraseña de nuestro propio rol, con el que estamos realizando la operación.

Conclusión

Ahora que sabes cómo instalar PostgreSQL en Debian 10 Buster podrás instalar este servicio en tu sistema y empezar con tus desarrollos de bases de datos o crear la infraestructura necesaria que el backend de muchas aplicaciones populares necesitan.

Si tienes alguna duda o pregunta, sugerencia o corrección puedes dejarme un comentario.

¡Ah! Y si esta guía te ha ayudado para poner marcha PostgreSQL en tu sistema Debian 10, ¡puedes agradecérmelo invitándome a un café!

 

O puedes librarte de la calderilla molesta que no usas en PayPal:

¡Gracias!

 

1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (5 votos, promedio: 5,00 de 5)
Cargando...

Deja una respuesta