GNU/Linux >> Tutoriales Linux >  >> Cent OS

Cómo instalar y configurar Postgres 13 en Centos 8

PostgreSQL es un poderoso sistema de base de datos relacional de objetos de código abierto con más de 30 años de desarrollo activo que le ha valido una sólida reputación por su confiabilidad, robustez de funciones y rendimiento. Postgres es un sistema de administración de bases de datos relacionales de código abierto y gratuito que enfatiza la extensibilidad y el cumplimiento de SQL. Originalmente se llamó POSTGRES, en referencia a sus orígenes como sucesora de la base de datos Ingres desarrollada en la Universidad de California, Berkeley. PostgreSQL se utiliza como almacén de datos primario o almacén de datos para muchas aplicaciones web, móviles, geoespaciales y de análisis. PostgreSQL puede almacenar datos estructurados y no estructurados en un solo producto.

Compruebe estos también:

  • Permisos de Postgres:crear, actualizar y eliminar usuarios de la base de datos
  • Cómo instalar y configurar Postgres 14 en Centos 8
  • Ejecución de Postgresql 14 con Docker y Docker-Compose
  • Cómo instalar y configurar Postgres 13 Ubuntu 20.04

Requisitos

Para seguir, asegúrese de tener lo siguiente:

  1. Servidor basado en Centos 8/Rocky Linux 8/RHEL 8
  2. Acceso root al servidor o usuario con acceso root
  3. Acceso a Internet desde el servidor
  4. Conocimiento básico de terminal Linux

Índice

  1. Asegúrese de que el servidor esté actualizado
  2. Instalación e inicio del servidor Postgres
  3. Métodos de autenticación de roles y bases de datos de PostgreSQL
  4. Conectando a la base de datos de postgres
  5. Configuración de instancia de postgres 14 para acceso remoto
  6. Administración de usuarios

1. Asegúrese de que el servidor esté actualizado

Antes de continuar, asegurémonos de que nuestro servidor tenga paquetes actualizados. Usa este comando:

$ sudo dnf -y update
Last metadata expiration check: 2:52:07 ago on Wed 06 Oct 2021 01:26:21 AM UTC.
Dependencies resolved.
Nothing to do.
Complete!

Instalación e inicio del servidor Postgres

Enumere los flujos disponibles para el módulo postgresql usando el comando dnf:

dnf module list postgresql

Salida:

# dnf module list postgresql

Name                    Stream              Profiles                        Summary
postgresql              9.6                 client, server [d]              PostgreSQL server and client module
postgresql              10 [d]              client, server [d]              PostgreSQL server and client module
postgresql              12                  client, server [d]              PostgreSQL server and client module
postgresql              13                  client, server [d]              PostgreSQL server and client module

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

el módulo marcado con [d] es el valor predeterminado, por lo que la instalación de postgres sin especificar que Stream lo instalará. En nuestro caso, el siguiente comando instala postgres 10

sudo dnf install @postgresql

Esta es la versión instalada

$ sudo dnf list installed | grep postgres
postgresql.x86_64                   10.17-1.module_el8.4.0+823+f0dbe136     @appstream
postgresql-server.x86_64            10.17-1.module_el8.4.0+823+f0dbe136     @appstream

Como ese no es el paquete que quiero, lo voy a desinstalar con esto

sudo dnf erase -y @postgresql

Ahora instalemos postgresql 13. Primero restableceremos el módulo de postgresql para asegurarnos de que no haya ninguno instalado.

sudo dnf module reset postgresql

sudo dnf install @postgresql:13

Instalemos también 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 postgresql-setup --initdb --unit postgresql

Salida:

 * Initializing database in '/var/lib/pgsql/data'
 * Initialized, logs are in /var/lib/pgsql/initdb_postgresql.log

Inicie el servicio PostgreSQL y habilítelo para que se inicie en el arranque:

sudo systemctl enable --now postgresql

Comprobar el estado de la base de datos

# systemctl status postgresql
● postgresql.service - PostgreSQL database server
   Loaded: loaded (/usr/lib/systemd/system/postgresql.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2021-08-05 08:15:07 UTC; 7s ago
  Process: 68683 ExecStartPre=/usr/libexec/postgresql-check-db-dir postgresql (code=exited, status=0/SUCCESS)
 Main PID: 68686 (postmaster)
    Tasks: 8 (limit: 23506)
   Memory: 17.3M
   CGroup: /system.slice/postgresql.service
           ├─68686 /usr/bin/postmaster -D /var/lib/pgsql/data
           ├─68687 postgres: logger
           ├─68689 postgres: checkpointer
           ├─68690 postgres: background writer
           ├─68691 postgres: walwriter
           ├─68692 postgres: autovacuum launcher
           ├─68693 postgres: stats collector
           └─68694 postgres: logical replication launcher

Aug 05 08:15:07 prod-db systemd[1]: Starting PostgreSQL database server...
Aug 05 08:15:07 prod-db postmaster[68686]: 2021-08-05 08:15:07.650 UTC [68686] LOG:  redirecting log output to logging collector process
Aug 05 08:15:07 prod-db postmaster[68686]: 2021-08-05 08:15:07.650 UTC [68686] HINT:  Future log output will appear in directory "log".
Aug 05 08:15:07 prod-db systemd[1]: Started PostgreSQL database server.

El Active: active (running) muestra que nuestro servidor postgres está funcionando como se esperaba.

Verifique la instalación conectándose al servidor de base de datos PostgreSQL e imprima su versión:

sudo -u postgres psql -c "SELECT version();"

Salida:

                                                  version
------------------------------------------------------------------------------------------------------------
 PostgreSQL 13.3 on x86_64-redhat-linux-gnu, compiled by gcc (GCC) 8.3.1 20191121 (Red Hat 8.3.1-5), 64-bit
(1 row)

3. Métodos de autenticación de roles y bases de datos de PostgreSQL

PostgreSQL usa un concepto llamado roles para manejar la autenticación y autorización del cliente. De forma predeterminada, Postgres está configurado para usar ident authentication , lo que significa que asocia roles de Postgres con una cuenta de sistema Unix/Linux coincidente. Si existe un rol dentro de Postgres, un nombre de usuario de Unix/Linux con el mismo nombre puede iniciar sesión como ese rol.

El procedimiento de instalación creó una cuenta de usuario llamada postgres que está asociada con el rol predeterminado de postgres. Para usar PostgreSQL, puede iniciar sesión en esa cuenta.

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

  • Trust – Un rol puede conectarse sin contraseña, siempre que se cumplan las condiciones definidas en el pg_hba.conf se cumplen.
  • Password – Un rol puede conectarse proporcionando una contraseña. Las contraseñas se pueden almacenar como scram-sha-256 , md5 y password (clear-text ).
  • 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.

4. Conectando a la base de datos de postgres

Hay varias formas de conectarse al servidor de postgres como usuario de postgres:

  1. Al cambiar a postres usuario
    Cambie a la cuenta de postgres en su servidor escribiendo:

    sudo -i -u postgres

    Ahora puede acceder a un aviso de Postgres inmediatamente escribiendo:

    
    [[email protected]-server ~]$ psql
    psql (13.3)
    Type "help" for help.

postgres=#

This will log you into the PostgreSQL prompt, and from here you are free to interact with the database management system right away.

2. By running the command as postgres user

Use this to run the command directly as the postgres user using sudo
```bash
sudo -u postgres psql

5. Configuración de instancia de postgres 14 para acceso remoto

Para lograr esto, modificaremos los archivos de configuración de postgres. Necesitamos abrir los archivos y ajustar las configuraciones necesarias.

El archivo de configuración de Postgresql 13 se encuentra en esta ruta /var/lib/pgsql/data/pg_hba.conf .

Cambie la identificación de pares a confianza:

sed -i '/^local/s/peer/trust/' /var/lib/pgsql/data/pg_hba.conf

Cambiar identificación de identidad a md5

sed -i '/^host/s/ident/md5/' /var/lib/pgsql/data/pg_hba.conf

Agregue un bloque para permitir el acceso desde cualquier lugar:

Agregue este contenido al archivo /var/lib/pgsql/data/pg_hba.conf

host    all             all             0.0.0.0/0                md5

Asegúrese de que PostgreSQL esté escuchando en *.
Agregue esta línea a la configuración aquí /var/lib/pgsql/data/postgresql.conf

listen_addresses='*'

Habilite y reinicie el servidor postgresql para recargar las configuraciones

sudo systemctl restart postgresql
sudo systemctl enable postgresql

6. Gestión de usuarios

Crear superusuario

Vamos a crear un usuario con privilegios de superusuario que podamos usar para administrar postgres.

Conectarse a la base de datos como rol de postres

$ sudo -u postgres psql
psql (13.3)
Type "help" for help.

postgres=#

Crear superusuario con nombre root :

CREATE ROLE root WITH LOGIN SUPERUSER CREATEDB CREATEROLE PASSWORD 'passwordhere';

Verifique si el usuario ha sido creado y si se le otorgaron los privilegios necesarios:

postgres=# CREATE ROLE root WITH LOGIN SUPERUSER CREATEDB CREATEROLE PASSWORD 'MrBpR89Yskv3hofGLP';
CREATE ROLE
postgres=# \du
                                   List of roles
 Role name |                         Attributes                         | Member of
-----------+------------------------------------------------------------+-----------
 postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
 root      | Superuser, Create role, Create DB                          | {}

Gestión de usuarios de aplicaciones

Use esto para crear una base de datos, cree un usuario y otorgue a ese usuario todos los accesos a esa base de datos:

create database app_db_name;
create user app_user with encrypted password 'dbpassword';
grant all privileges on database app_db_name to app_user;

Consulte esta guía completa sobre administración de usuarios y permisos en postgres aquí.

Conectando a la instancia desde un host remoto

Use este comando para conectarse a la instancia de postgres desde la máquina local:

psql 'postgres://<username>:<password>@<host>:<port>/<db>?sslmode=disable'

# like
psql 'postgres://root:[email protected]:5432/postgres?sslmode=disable'

Conclusión

Hasta este punto, hemos logrado instalar Postgresql13 en un servidor Ubuntu, realizar algunas configuraciones básicas y luego realizar una administración básica de usuarios.


Cent OS
  1. Cómo instalar y configurar Gitlab en CentOS 8

  2. Cómo instalar y configurar Postgres 13 Ubuntu 20.04

  3. Cómo instalar y configurar Postgres 13 en Centos 8

  4. Cómo instalar y configurar Postgres 14 Ubuntu 20.04

  5. Cómo instalar y configurar Postgres 14 en Fedora 34

Cómo instalar y configurar el servidor VNC en CentOS 7

Cómo instalar y configurar Zimbra Multi Server en CentOS 7

Cómo instalar y configurar el servidor VNC en CentOS 7 / RHEL 7

Cómo instalar y configurar Memcached en CentOS 8

Cómo instalar y configurar el servidor DHCP en Centos 8

Cómo instalar y configurar el servidor VNC en CentOS/RHEL 8