Cómo instalar PostgreSQL en CentOS 8 Linux

27 feb 2021 4 min di lettura
Cómo instalar PostgreSQL en CentOS 8 Linux
Indice dei contenuti

Introducción

PostgreSQL o Postgres es un sistema de administración de bases de datos relacionales de objetos de uso general de código abierto con muchas características avanzadas que le permite crear entornos tolerantes a fallas o aplicaciones complejas.

En esta guía, discutiremos cómo instalar el servidor de base de datos PostgreSQL en CentOS 8. Antes de elegir qué versión instalar, asegúrese de que sus aplicaciones lo admitan.

También exploraremos los conceptos básicos de la administración de bases de datos PostgreSQL.

Prerrequisitos

Para instalar los paquetes, debe iniciar sesión como root o usuario con privilegios de sudo.

Si desea instalar PostgreSQL en un servidor remoto, continúe leyendo; de lo contrario, omita el primer párrafo "Conectando al servidor" y lea el siguiente.

Conexión al servidor

Para acceder al servidor, necesita conocer la dirección IP. También necesitará su nombre de usuario y contraseña para la autenticación. Para conectarse al servidor como root, escriba el siguiente comando:

ssh root@IP_DEL_SERVER

A continuación, deberá ingresar la contraseña del usuario root.

Si no está utilizando el usuario root, puede iniciar sesión con otro nombre de usuario utilizando el mismo comando, luego cambie root a su nombre de usuario:

ssh nome_utente@IP_DEL_SERVER

Luego se le pedirá que ingrese su contraseña de usuario.

El puerto estándar para conectarse a través de ssh es 22, si su servidor usa un puerto diferente, deberá especificarlo usando el parámetro -p, luego escriba el siguiente comando:

ssh nome_utente@IP_DEL_SERVER -p PORTA

Instalar PostgreSQL en CentOS 8

Al momento de escribir este artículo, hay dos versiones del servidor PostgreSQL disponibles para la instalación desde los repositorios estándar de CentOS: la versión 9.6 y 10.0.

Para enumerar los flujos de módulos de PostgreSQL disponibles, escriba:

dnf module list postgresql

La salida muestra que el módulo postgresql está disponible con dos flujos. Cada flujo tiene dos perfiles: servidor y cliente. La secuencia 10 con el servidor de perfiles es la predeterminada:

CentOS-8 - AppStream
 Name Stream Profiles Summary
 postgresql 10 [d] client, server [d] PostgreSQL server and client module
 postgresql 9.6 client, server [d] PostgreSQL server and client module

Para instalar la secuencia predeterminada, escriba la versión 10.0 del servidor PostgreSQL:

sudo dnf install @postgresql:10

Para instalar el servidor PostgreSQL versión 9.6, escriba:

sudo dnf install @postgresql:9.6

Es posible que también desee instalar el paquete contrib, que proporciona varias características adicionales para la base de datos PostgreSQL:

sudo dnf install postgresql-contrib

Una vez que se complete la instalación, inicialice la base de datos PostgreSQL con el siguiente comando:

sudo postgresql-setup initdb
Initializing database... OK

Inicie el servicio PostgreSQL y habilítelo para que se inicie automáticamente al iniciar el sistema:

sudo systemctl enable --now postgresql

Utilice la psql para verificar la instalación conectándose al servidor de base de datos PostgreSQL e imprimiendo la versión:

sudo -u postgres psql -c "SELECT version();"
PostgreSQL 10.6 on x86_64-redhat-linux-gnu, compiled by gcc (GCC) 8.2.1 20180905 (Red H
 at 8.2.1-3), 64-bit

Métodos y roles de autenticación de PostgreSQL

PostgreSQL administra los permisos de acceso a la base de datos utilizando el concepto de roles. Un rol puede representar un usuario de base de datos o un grupo de usuarios de base de datos.

PostgreSQL admite varios métodos de autenticación. Los métodos más utilizados son:

  • Confianza: un rol que puede conectarse sin contraseña, siempre que se cumplan las condiciones definidas en pg_hba.conf.
  • Contraseña: un rol puede conectarse proporcionando una contraseña. Las contraseñas se pueden almacenar como scram-sha-256, md5 y password (en texto sin cifrar).
  • Ident: solo se admite en conexiones TCP /IP. Funciona al obtener el nombre de usuario del sistema operativo del cliente, con una asignación de nombre de usuario opcional.
  • Peer: idéntico a Ident, pero solo se admite en conexiones locales.

La autenticación del cliente PostgreSQL se define en el pg_hba.conf configuración llamado pg_hba.conf. De forma predeterminada, para las conexiones locales, PostgreSQL está configurado para utilizar el método de autenticación de pares.

El postgres se crea automáticamente cuando instala el servidor PostgreSQL. Este usuario es el superusuario de la instancia de PostgreSQL. Es equivalente al usuario root de MySQL.

Para iniciar sesión en el servidor PostgreSQL como postgres usuario, usuario el cambio y luego acceder a la línea de PostgreSQL usando el psql utilidad:

sudo su - postgres
psql

Desde aquí, puede interactuar con la instancia de PostgreSQL. Para salir del shell de PostgreSQL, escriba:

\q

Después de salir del shell de PostgreSQL, vuelva a su usuario original:

exit

También puede acceder al indicador de PostgreSQL sin cambiar de usuario con el comando sudo

sudo -u postgres psql

Normalmente, el postgres es utilizado solo por el host local.

Crear una base de datos y un rol de PostgreSQL

Solo el superusuario y los roles con CREATEROLE pueden crear nuevos roles.

En el siguiente ejemplo, crearemos un nuevo rol llamado alice, una base de datos llamada alicedb y otorgaremos privilegios en la base de datos.

Primero, conéctese al shell de PostgreSQL:

sudo -u postgres psql

Cree un nuevo rol de PostgreSQL con el siguiente comando:

create role alice;

Crea una nueva base de datos:

create database alicedb;

Otorgue privilegios de usuario en la base de datos ejecutando la siguiente consulta:

grant all privileges on database alicedb to alice;

Habilite el acceso remoto al servidor PostgreSQL

De forma predeterminada, el servidor PostgreSQL solo escucha en la interfaz 127.0.0.1

Instale el editor de texto nano o utilice el editor vi predeterminado:

sudo dnf install nano

Para habilitar el acceso remoto a su servidor PostgreSQL, abra el archivo de configuración:

sudo nano /var/lib/pgsql/data/postgresql.conf

Desplácese hacia abajo hasta la CONNECTIONS AND AUTHENTICATION y agregue /edite la línea listen_addresses, así:

#------------------------------------------------------------------------------
 # CONNECTIONS AND AUTHENTICATION
 #------------------------------------------------------------------------------

 # - Connection Settings -

 listen_addresses = '*' # what IP address(es) to listen on;

Guarde el archivo y reinicie el servicio PostgreSQL con:

sudo systemctl restart postgresql

Verifique los cambios con la utilidad ss

ss -nlt | grep 5432
LISTEN 0 128 0.0.0.0:5432 0.0.0.0:*
 LISTEN 0 128 [::]:5432 [::]:*

El resultado anterior muestra que el servidor PostgreSQL está escuchando en el puerto predeterminado en todas las interfaces (0.0.0.0).

El último paso es configurar el servidor para aceptar conexiones remotas editando el pg_hba.conf.

A continuación, se muestran algunos ejemplos que muestran diferentes casos de uso:

sudo nano /var/lib/pgsql/data/pg_hba.conf
# TYPE DATABASE USER ADDRESS METHOD

 # The user jane can access all databases from all locations using an md5 password
 host all alice 0.0.0.0/0 md5

 # The user jane can access only the janedb database from all locations using an md5 password
 host alicedb alice 0.0.0.0/0 md5

 # The user jane can access all databases from a trusted location (192.168.1.134) without a password
 host all alice 192.168.21.21 trust

Conclusión

CentOS 8 ofrece dos versiones de PostgreSQL: 9.6 y 10.0.

Para obtener más información sobre este tema, consulte la documentación de PostgreSQL.

Buy me a coffeeBuy me a coffee

Supportaci se ti piacciono i nostri contenuti. Grazie.

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.