PostgreSQL o Postgres es un sistema de administración de base de datos relacional de objetos de propósito general y código abierto con muchas características avanzadas que le permiten 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 la admitan.

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

requisitos previos

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

Instalación de PostgreSQL en CentOS 8

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

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

dnf module list postgresql

El resultado 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 
  1. Para instalar la secuencia predeterminada, escriba la versión 10.0 del servidor PostgreSQL:

    sudo dnf install @postgresql:10
  2. Para instalar el servidor PostgreSQL versión 9.6 escriba:

    sudo dnf install @postgresql:9.6 

También es posible que desee instalar el paquete contrib que proporciona varias funciones adicionales para el sistema de base de datos PostgreSQL.

sudo dnf install postgresql-contrib

Una vez completada 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 en el arranque:

sudo systemctl enable --now postgresql

Use la psqlherramienta para verificar la instalación conectándose al servidor de la base de datos PostgreSQL e imprima su 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 Hat 8.2.1-3), 64-bit

Funciones y métodos de autenticación de PostgreSQL

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

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

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

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

El postgresusuario 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 postgresusuario, primero cambie al usuario y luego acceda al indicador de PostgreSQL usando la psqlutilidad:

sudo su - postgrespsql

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

\q

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

sudo -u postgres psql

Por lo general, el postgresusuario se usa solo desde el host local.

Creación de funciones y bases de datos de PostgreSQL

Solo los superusuarios y roles con CREATEROLEprivilegios pueden crear nuevos roles.

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

  1. Primero, conéctese al shell de PostgreSQL:

    sudo -u postgres psql
  2. Cree un nuevo rol de PostgreSQL usando el siguiente comando:

    CREATE ROLE john;
  3. Crear una nueva base de datos:

    CREATE DATABASE johndb;
  4. Otorgue privilegios al usuario en la base de datos ejecutando la siguiente consulta:

    GRANT ALL PRIVILEGES ON DATABASE johndb TO john;

Habilitar el acceso remoto al servidor PostgreSQL

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

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 AUTHENTICATIONsección y agregue/edite la siguiente línea:

/var/lib/pgsql/data/postgresql.conf
#------------------------------------------------------------------------------
# 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 ssutilidad:

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.confarchivo.

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

/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             jane            0.0.0.0/0                md5

# The user jane can access only the janedb database from all locations using an md5 password
host    janedb          jane            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             jane            192.168.1.134            trust

Conclusión

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

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

Si encuentra un problema o tiene comentarios, deje un comentario a continuación.