Cómo instalar PostgreSQL en Debian 9 Stretch

Cómo instalar PostgreSQL en Debian 9 Stretch

  • Autor de la entrada:
  • Categoría de la entrada:Linux
  • Comentarios de la entrada:1 comentario

En esta entrada mostraremos cómo instalar PostgreSQL en Debian 9 Stretch paso a paso, un motor de bases de datos de código abierto que puede resultar complicado de instalar si vienes de utilizar otras bases de datos más populares. Al final de esta guía habrás logrado instalar y poner en funcionamiento PostgreSQL Server en tu servidor o VPS Debian y podrás conectar desde el cliente de consola con tu usuario.

Antes de instalar PostgreSQL en Debian 9

Para poder instalar PostgreSQL Server en Linux Debian 9 Stretch siguiendo esta guía necesitamos cumplir los siguientes requerimientos mínimos:

  • Un sistema Debian 9 GNU/Linux Stretch actualizado.
  • Un usuario con permisos de sudo o el mismo root (menos recomendable).
  • Conexión a Internet.

Cómo instalar PostgreSQL en Debian 9

Podríamos instalar PostgreSQL en Debian 9 Stretch usando los paquetes disponibles en el repositorio oficial de la distribución, pero eso nos relegaría a la versión 9.6, así que si queremos trabajar con PostgreSQL 13.x tendremos que instalar el repositorio oficial.

Instalar el repositorio de PostgreSQL 13 para Debian 9

En el caso de querer disponer de las últimas versiones estables de PostgreSQL para Debian 9 Stretch, creamos el archivo de configuración del repositorio:

~$ sudo nano /etc/apt/sources.list.d/postgresql.org.list

Con la siguiente línea como contenido:

deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main

Guardamos el archivo e instalamos algunas herramientas que necesitaremos seguidamente:

~$ sudo apt install -y ca-certificates gnupg

Finalemente, descargamos e instalamos la clave pública para comprobar las firmas de los paquetes procedentes de este repositorio:

~$ wget -qO - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

Instalar PostgreSQL

Independientemente de la versión de PostgreSQL que vayamos a instalar en Debian 9 Stretch, la primera acción será actualizar la información de los repositorios:

~$ sudo apt update

Con las listas de paquetes actualizadas ya podemos descargar e instalar PostgreSQL con apt, siendo postgresql el paquete que necesitamos:

~$ sudo apt -y install postgresql

A diferencia de otras versiones de Linux y sistemas Unix, en Debian 9 la instalación deja PostgreSQL Server perfectamente inicializado y funcionando. Mientras que en otros sistemas una vez instalado PostgreSQL es necesario inicializar la base de datos antes de lanzar el servicio por primera vez, en Debian 9 ese trabajo lo hace apt por nosotros. De hecho, puedes comprobar que el servicio está iniciado y disponible con el comando systemctl status postgresql:

como instalar postgresql en debian 9 stretch

Cómo conectar con PostgreSQL desde consola en Debian 9

Durante la instalación de PostgreSQL en Debian 9 se crea un usuario y un grupo postgres con los que funciona el servicio. Pero además este usuario postgres es administrador por lo que inicialmente es el único con el que podemos conectar al servicio.

PostgreSQL trabaja con un sistema de roles, que vienen a ser algo parecido a los usuarios de otros sistemas de bases de datos. Si intentamos conectar con el cliente psql y nuestro usuario de trabajo de Debian 9 recibiremos este mensaje:

~$ psql
psql: error: no se pudo conectar al servidor: FATAL:  no existe el rol «chacho»

Ni siquiera es posible conectar como root a través de sudo:

~$ sudo psql
psql: error: no se pudo conectar al servidor: FATAL:  no existe el rol «root»

La única forma de conectar con el servidor PostgreSQL es a través del usuario postgres con sudo:

~$ sudo -u postgres psql
psql (13.0 (Debian 13.0-1.pgdg90+1))
Digite «help» para obtener ayuda.

postgres=#

Puedes cerrar la conexión con el comando \q en PostgreSQL 9, o exit en PostgreSQL 13.

Cómo crear tu rol de PostgreSQL en Debian 9

Vamos a crear un nuevo rol de PostgreSQL para nuestro usuario de trabajo de Debian 9. Para ello usaremos el comando createuser de PostgreSQL como usuario postgres:

~$ sudo -u postgres createuser --interactive -P chacho
Ingrese la contraseña para el nuevo rol:
Ingrésela nuevamente:
¿Será el nuevo rol un superusuario? (s/n) s
~$

Ya tenemos creado un rol con el mismo nombre que nuestra cuenta de Debian 9, en este caso además se tratará de un superusuario, para poder administrar otros usuarios y bases de datos sin necesidad de recurrir al usuario postgres con sudo. Sin embargo, aún no podemos conectar con el cliente psql, si lo intentas obtendrás un error:

~$ psql
psql: error: no se pudo conectar al servidor: FATAL:  no existe la base de datos «chacho»

Esto ocurre porque cuando se inicia sesión en PostgreSQL se vincula el rol correspondiente con una base de datos con el mismo nombre que dicho rol. En este caso intentamos acceder con el rol chacho, pero aún no existe la base de datos chacho. Así que usaremos por primera vez nuestro nuevo rol para crear esa base de datos mediante el comando createdb:

~$ createdb chacho -O chacho

Con el parámetro -O otorgamos la propiedad de la base de datos al rol que queramos. Lo hacemos así porque queremos que el rol sea el propietario de su propia base de datos.

Tenemos rol, tenemos base de datos… es hora de iniciar sesión con el cliente psql y nuestra cuenta de Debian 9 Stretch:

~$ psql
...

chacho=#

Observa que a pesar de que creamos el rol con contraseña, no se nos ha solicitado para conectar. Esto ocurre porque por defecto la autenticación local no la necesita, basta con conectar el usuario que inicia sesión con el rol que tenga el mismo nombre.

Y ya podemos empezar a usar el lenguaje SQL para crear y modificar tablas, insertar y editar datos, realizar consultas, etc. Por ejemplo para crear una tabla de pruebas en nuestra base de datos, lo hacemos mediante SQL:

chacho=# create table pruebas ();
CREATE TABLE
chacho=# \d
       Listado de relaciones
 Esquema | Nombre  | Tipo  | Dueño
---------+---------+-------+--------
 public  | pruebas | tabla | chacho
(1 fila)

chacho=#

Con «create table…» creamos la tabla y con el comando \d vemos las tablas de la base de datos. El uso de SQL y los comandos del cliente psql exceden del alcance de esta pequeña guía de instalación. De todas formas, el comando \h o \h comando te proporcionará mucha ayuda sobre los comandos disponibles.

Activar el uso de contraseñas en PostgreSQL

Acabamos de comprobar que a pesar de crear contraseñas no se tienen en cuenta, ya que en la configuración actual de PostgreSQL no se pide contraseña en modo local.

En el archivo pg_hba.conf es donde se configura el modo y circunstancias en que se autentican los usuarios, así que lo editaremos para hacer el cambio que necesitamos:

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

O si has instalado PostgreSQL 13:

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

Buscaremos esta línea:

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

Y cambiaremos el valor peer por md5:

...
local   all             all                                     md5
...

Es necesario recargar la configuración del servicio para aplicar los cambios:

~$ sudo systemctl reload postgresql

Ahora, al iniciar sesión con el cliente psql se solicitará la contraseña de nuestro rol:

~$ psql
Contraseña para usuario chacho:
...

chacho=#

A partir de ahora es fácil crear bases de datos y roles con contraseña para aquellas aplicaciones que necesiten trabajar con PostgreSQL sobre nuestro sistema Debian 9 Stretch.

Conclusión

Ahora que ya sabes cómo instalar PostgreSQL en Debian 9 ya puedes empezar a trabajar con SQL para tus propios desarrollos o crear bases de datos para aplicaciones y sistemas que se apoyan en este motor de bases de datos de código abierto.

Si tienes alguna pregunta, duda, sugerencia o quieres informar de algún error puedes dejar un comentario.

Y si te ha servido esta guía para poner por fin en marcha PostgreSQL sobre Debian, ¡siempre puedes invitarme a un café!

 

O puedes dejarme 1 $ de propina en PayPal:

¡Gracias!

 

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

Esta entrada tiene un comentario

  1. Dante

    Muy bueno, muchas gracias. Vendría bien alguna lista de (por ejemplo) las cinco cosas más usadas de PostgreSQL después de ser instalado, o algo así. Se me ha hecho corto y me he quedado con ganas de más.

Deja una respuesta