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.
NOTA: Debian 9 Stretch alcanzó el fin de su ciclo de vida, por lo que PostgreSQL también dejó de actualizar su repositorio para esta distribución. En este tutorial explicamos cómo instalar la versión nativa de la distribución o versiones más modernas (hasta la 14) desde el archivo de PostgreSQL. En este sitio web puedes encontrar artículos similares a este para las versiones con soporte de Debian.
Tabla de contenidos
Antes de instalar PostgreSQL en Debian 9 Stretch
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 12, 13, ó 14 tendremos que instalar el repositorio oficial.
Instalar el repositorio de PostgreSQL 14 para Debian 9
En el caso de querer disponer de las versiones finales de PostgreSQL para Debian 9 Stretch, debemos instalar algunas herramientas que necesitaremos seguidamente, así que actualizamos la información de los repositorios:
~$ sudo apt update
E instalamos los paquetes necesarios:
~$ sudo apt install -y apt-transport-https
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 https://apt-archive.postgresql.org/pub/repos/apt/ stretch-pgdg main
Guardamos y cerramos el archivo.
Finalmente, 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 para disponer de la última versión (o la versión de la distribución si no has instalado el repositorio oficial):
~$ sudo apt -y install postgresql
Si has instalado el repositorio oficial puedes elegir una versión concreta si fuese necesario (sustituye XX en el siguiente comando por 8.2, 8.3, 8.4, 9.0, 9.1, 9.2, 9.3, 9.4, 9.5, 9.6, 10, 11, 12, 13 ó 14):
~$ sudo apt -y install postgresql-XX
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
:
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: falló la conexión al servidor en el socket «/var/run/postgresql/.s.PGSQL.5432»: FATAL: no existe el rol «chacho»
Ni siquiera es posible conectar como root a través de sudo:
~$ sudo psql psql: error: falló la conexión al servidor en el socket «/var/run/postgresql/.s.PGSQL.5432»: 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 (14.5 (Debian 14.5-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 14.
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: falló la conexión al servidor en el socket «/var/run/postgresql/.s.PGSQL.5432»: 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 14:
~$ sudo nano /etc/postgresql/14/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 (para PostgreSQL 9) ó scram-sha-256 (para PostgreSQL 14):
... local all all scram-sha-256 ...
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 9 y quieres agradecérnoslo, puedes hacerlo dejando 1 $ de propina en PayPal:
¡Gracias!
Actualizado para usar el repositorio desde el archivo de PostgreSQL.
Muchas gracias.
Pude instalar sin problemas con tu explicación.
¡Estupendo, Jesús Edwin!
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.