Vamos a ver en esta entrada cómo instalar PostgreSQL en CentOS 9 paso a paso, de modo que al final de este tutorial podrás administrar y trabajar con este potente servicio de bases de datos en tu servidor o VPS CentOS de forma local o remota.
Contenido
- Antes de instalar PostgreSQL en CentOS 9
- Cómo instalar PostgreSQL Server en CentOS 9
- Cómo instalar el cliente de PostgreSQL en CentOS 9
- Cómo acceder a PostgreSQL en CentOS 9
- Cómo activar el uso de contraseñas de PostgreSQL en CentOS 9
- Crear bases de datos y usuarios para aplicaciones de terceros
- Acceso remoto a PostgreSQL en CentOS 9
- Conclusión
Antes de instalar PostgreSQL en CentOS 9
Para seguir los pasos de esta guía de instalación de PostgreSQL en CentOS 9 necesitarías pasar estos mínimos requisitos:
- Un sistema CentOS Stream 9 actualizado.
- Acceso a línea de comandos como root o un usuario con capacidades de sudo.
- Conexión a Internet.
Cómo instalar PostgreSQL Server en CentOS 9
A la hora de instalar PostgreSQL en CentOS 9 debemos tener en cuenta que en los repositorios de la distribución tenemos disponibles módulos para las versiones 15 y 16.
Actualizamos la información de los repositorios:
~$ sudo yum update
Y comprobamos los módulos mencionados:
~$ sudo yum module list postgresql ... CentOS Stream 9 - AppStream Name Stream Profiles Summary postgresql 15 client, server [d] PostgreSQL server and client module postgresql 16 client, server [d] PostgreSQL server and client module Leyenda: [d] predeterminado, [e] activo, [x] inactivo, [i] instalado
Elegimos la versión que nos interese e instalamos el módulo relacionado; por ejemplo, para la versión 16:
~$ sudo yum module install -y postgresql:16
Inicialización del servicio
Antes de lanzar el servicio es necesario inicializarlo, para lo cual lanzaremos el comando postgresql-setup:
~$ sudo postgresql-setup --initdb
Tras descargar e instalar PostgreSQL y sus dependencias se ha creado un nuevo servicio en CentOS 9, llamado postgresql.service (o postgresql si prefieres el nombre corto). El servicio no inicia tras la instalación ni queda habilitado para iniciar automáticamente en cada arranque de CentOS 9.
Iniciamos el servicio con el comando systemctl:
~$ sudo systemctl start postgresql
Si además quieres que PostgreSQL arranque automáticamente en cada inicio de CentOS 9, habrá también que habilitar el servicio:
~$ sudo systemctl enable postgresql
Podemos comprobar el estado del servicio PostgreSQL en cualquier momento mediante el comando systemctl status postgresql
.
Cómo instalar el cliente de PostgreSQL en CentOS 9
Al instalar PostgreSQL Server en CentOS 9 se instala automáticamente como dependencia el cliente. En el caso de que sólo quieras instalar un cliente de PostgreSQL para CentOS 9 con el fin de acceder remotamente a otro servidor, por ejemplo, el paquete que debes instalar es postgresql:
~$ sudo yum install -y postgresql
Entre otros comandos y componentes, se instalará el cliente de consola psql.
Cómo acceder a PostgreSQL en CentOS 9
Debido al sistema de roles de PostgreSQL no es posible acceder directamente al servicio con los usuarios del sistema. El único rol que existe de forma predeterminada es postgres, para lo que la instalación de PostgreSQL ha creado también un usuario postgres de CentOS 9.
Por ello, la única forma de conectar a PostgreSQL con el cliente de consola psql es usando sudo y el usuario postgres:
~$ sudo -u postgres psql psql (16.1) Digite «help» para obtener ayuda. postgres=#
Puedes cerrar el cliente con el comando \q o con exit.
Otra forma de acceder es crear un rol de PostgreSQL y una base de datos para nuestro usuario de trabajo de CentOS 9. Para esto tenemos los comandos createuser y createdb.
De nuevo utilizaremos el usuario postgres para crear el rol de nuestro usuario de trabajo:
~$ sudo -u postgres createuser --interactive -P instalador Ingrese la contraseña para el nuevo rol: Ingrésela nuevamente: ¿Será el nuevo rol un superusuario? (s/n) s ~$
Ahora ya podemos usar nuestro nuevo rol para crear la base de datos asociándola al rol de nuestro usuario:
~$ createdb instalador -O instalador
Podemos conectar localmente con nuestro usuario de CentOS 9 y su rol asociado lanzando el cliente psql sin más:
~$ psql psql (16.1) Digite «help» para obtener ayuda. instalador=#
En este caso hemos creado un rol administrador, con lo que ya podremos crear otros roles con nuestro usuario de trabajo, sin tener que volver a usar el usuario postgres con sudo.
Habrás observado que aunque creamos nuestro rol con contraseña, no se nos ha solicitado al acceder. Esto sucede porque las conexiones locales se basan en el usuario de CentOS 9 que conecta, ya se supone que este usuario se ha autenticado en el sistema.
Cómo activar el uso de contraseñas de PostgreSQL en CentOS 9
Si deseas activar el uso de contraseñas de forma local, será necesario editar el archivo pg_hba.conf:
~$ sudo nano /var/lib/pgsql/data/pg_hba.conf
Buscamos esta línea:
... # "local" is for Unix domain socket connections only local all all peer ...
Cambiaremos peer por scram-sha-256 para activar el uso de contraseñas locales, pero además añadiremos justo antes otra directiva local para dejar el comportamiento del usuario postgres intacto:
... local all postgres peer local all all scram-sha-256 ...
Guardamos los cambios del archivo pg_hba.conf y recargamos la configuración del servicio:
~$ sudo systemctl reload postgresql
Ahora, si usamos psql con nuestro rol se nos pedirá la contraseña:
~$ psql Contraseña para usuario instalador: psql (16.1) Digite «help» para obtener ayuda. instalador=#
Mientras que si accedemos con postgres seguirá sin necesitarla:
~$ sudo -u postgres psql psql (16.1) Digite «help» para obtener ayuda. postgres=#
Crear bases de datos y usuarios para aplicaciones de terceros
En nuestro sitio web encontrarás tutoriales y guías de instalación en CentOS 9 de aplicaciones que trabajan sobre PostgreSQL, y suelen necesitar un usuario y una base de datos. Con nuestro rol administrador podemos crear fácilmente nuevos roles con contraseña:
~$ createuser -P appdb Ingrese la contraseña para el nuevo rol: Ingrésela nuevamente: Contraseña:
Primero se nos solicita la contraseña y su confirmación para el nuevo rol, y a continuación debemos proporcionar la contraseña de nuestro rol administrador.
A continuación creamos la base de datos, asociándola al nuevo rol:
~$ createdb appdb -O appdb Contraseña:
Igualmente se nos pide la contraseña.
A la hora de instalar o configurar la aplicación, especificaremos el rol, la contraseña y la base de datos que hemos creado expresamente para dicha aplicación.
Acceso remoto a PostgreSQL en CentOS 9
Por defecto el servicio PostgreSQL sólo admite conexiones locales, así que si queremos acceder remotamente tendremos que hacer algunos cambios en la configuración.
Editaremos el archivo de configuración:
~$ sudo nano /var/lib/pgsql/data/postgresql.conf
Y buscaremos la directiva listen_addresses:
... # - Connection Settings - #listen_addresses = 'localhost' # what IP address(es) to listen on; # comma-separated list of addresses; # defaults to 'localhost'; use '*' for $ # (change requires restart) ...
La directiva se encuentra desactivada, por lo que se toma el valor por defecto, localhost. Podemos ver en los comentarios que el valor que necesitamos sería ‘*’ y que tal cambio exige reiniciar el servicio.
Así que activamos la directiva con el valor que nos interesa:
... listen_addresses = '*' ...
Guardamos y cerramos el archivo.
No basta con este cambio, ya que hay que configurar el método de autenticación para los usuarios remotos. Para ello editaremos de nuevo el archivo pg_hba.conf y añadimos estas líneas al final del archivo (o al menos a continuación de las otras directivas host):
... # Acceso remoto host all all all scram-sha-256
Al especificar scram-sha-256 como método de autenticación estamos indicando que los usuarios que conecten remotamente deberán identificarse con contraseña. Pero existen otras dos directivas host para conexiones locales vía TCP/IP:
... # IPv4 local connections: host all all 127.0.0.1/32 ident # IPv6 local connections: host all all ::1/128 ident ...
Podemos observar que la autenticación es del tipo ident, lo que causará problemas a aquellas aplicaciones locales que intenten conectar mediante contraseña. La solución sería cambiar la autenticación ident por scram-sha-256, o desactivar estas dos directivas, ya que la que acabamos de añadir es más general:
... # IPv4 local connections: #host all all 127.0.0.1/32 ident # IPv6 local connections: #host all all ::1/128 ident # Acceso remoto host all all all scram-sha-256 ...
Guardamos los cambios, cerramos el archivo y reiniciamos PostgreSQL:
~$ sudo systemctl restart postgresql
Configurar el firewall de CentOS 9 para PostgreSQL
Lo habitual es que el firewall de CentOS 9 esté activado, así que para permitir conexiones al servicio PostgreSQL debemos añadir la excepción correspondiente:
~$ sudo firewall-cmd --permanent --add-service=postgresql
Y recargaremos la configuración del firewall para aplicar los cambios:
~$ sudo firewall-cmd --reload
Conectar de forma remota a PostgreSQL
Por fin podemos acceder desde el sistema remoto equipado con el cliente psql, indicando con el parámetro -h la dirección del servidor CentOS 9 y con el parámetro -U el rol con el que queremos conectar:
~$ psql -h centos9.local.lan -U instalador Contraseña para usuario instalador: psql (16.1) Digite «help» para obtener ayuda. instalador=#
Se nos pide la contraseña del rol que queremos usar y tras facilitarla podemos trabajar de forma interactiva como si lo estuviésemos haciendo en local.
Conclusión
Ahora ya sabes cómo instalar y configurar PostgreSQL Server en CentOS 9, cómo crear roles, bases de datos, administradores y trabajar local y remotamente. Ya estás listo para dar soporte a cualquier aplicación que trabaje sobre este potente motor de bases de datos en CentOS 9.
¡Apoya este sitio!
¿Te ha servido nuestra guía de instalación de este servicio de bases de datos para tu sistema? Si quieres agradecérnoslo, la más mínima aportación contribuye al mantenimiento de este sitio y la creación y elaboración de más guías y tutoriales.
Puedes ayudarnos dejando una propina de 1 $ desde PayPal:
O, si te sientes especialmente agradecido, puedes ayudarnos a un café:
¡Gracias!