GNU/Linux >> Tutoriales Linux >  >> Fedora

Cómo instalar y configurar Postgres 14 en Fedora 34

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.

En esta guía vamos a instalar Postgresql 14 en Fedora 34.

Contenido relacionado

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

Requisitos

Para seguir, asegúrese de tener lo siguiente:

  1. Servidor Fedora 34 actualizado
  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:55:24 ago on Tue 26 Oct 2021 12:05:29 PM UTC.
Dependencies resolved.
Nothing to do.
Complete!

2. Instalación e inicio del servidor Postgres

El módulo fedora dnf postgres contiene una instalación de Postgres 14 pero no es la predeterminada. Revisemos el módulo Postges en Fedora usando este comando:

$ sudo dnf module list postgresql
Last metadata expiration check: 2:56:45 ago on Tue 26 Oct 2021 12:05:29 PM UTC.
Fedora Modular 34 - x86_64
Name                                                              Stream                                                        Profiles                                                                 Summary
postgresql                                                        9.6                                                           client, server [d]                                                       PostgreSQL module
postgresql                                                        10                                                            client, server [d]                                                       PostgreSQL module
postgresql                                                        11                                                            client, server [d]                                                       PostgreSQL module
postgresql                                                        12                                                            client, server                                                           PostgreSQL module
postgresql                                                        13                                                            client, server                                                           PostgreSQL module

Fedora Modular 34 - x86_64 - Updates
Name                                                              Stream                                                        Profiles                                                                 Summary
postgresql                                                        9.6                                                           client, server [d]                                                       PostgreSQL module
postgresql                                                        10                                                            client, server [d]                                                       PostgreSQL module
postgresql                                                        11                                                            client, server [d]                                                       PostgreSQL module
postgresql                                                        12                                                            client, server                                                           PostgreSQL module
postgresql                                                        13                                                            client, server                                                           PostgreSQL module
postgresql                                                        14                                                            client, server                                                           PostgreSQL module

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

Eso significa que para usarlo tienes que habilitarlo. Primero reinicie el módulo de postgres para que no tengamos un valor predeterminado

sudo dnf module reset postgresql

Luego habilite postgres 14 con este comando:

$ sudo dnf module enable postgresql:14
Last metadata expiration check: 3:03:33 ago on Tue 26 Oct 2021 12:05:29 PM UTC.
Dependencies resolved.
================================================================================================================================================================================================================================================================================
 Package                                                           Architecture                                                     Version                                                             Repository                                                         Size
================================================================================================================================================================================================================================================================================
Enabling module streams:
 postgresql                                                                                                                         14

Transaction Summary
================================================================================================================================================================================================================================================================================

Is this ok [y/N]: y
Complete!

Ahora instalemos Postgresql 14 y el paquete Contrib que proporciona varias funciones adicionales para el sistema de base de datos PostgreSQL:

sudo dnf install -y postgresql-server postgresql-contrib

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

$ sudo postgresql-setup initdb
WARNING: using obsoleted argument syntax, try --help
WARNING: arguments transformed to: postgresql-setup --initdb --unit postgresql
 * Initializing database in '/var/lib/pgsql/data'
 * Initialized, logs are in /var/lib/pgsql/initdb_postgresql.log

Ahora inicie el servicio:

sudo systemctl start postgresql

Luego habilite el servicio para que se inicie cuando el servidor se reinicie:

$ sudo systemctl enable postgresql
Created symlink /etc/systemd/system/multi-user.target.wants/postgresql.service → /usr/lib/systemd/system/postgresql.service.

Confirme que se está ejecutando Postgres 14:

$ sudo systemctl status postgresql
● postgresql.service - PostgreSQL database server
     Loaded: loaded (/usr/lib/systemd/system/postgresql.service; enabled; vendor preset: disabled)
     Active: active (running) since Tue 2021-10-26 15:18:53 UTC; 46s ago
    Process: 17645 ExecStartPre=/usr/libexec/postgresql-check-db-dir postgresql (code=exited, status=0/SUCCESS)
   Main PID: 17647 (postmaster)
      Tasks: 8 (limit: 4603)
     Memory: 15.7M
        CPU: 47ms
     CGroup: /system.slice/postgresql.service
             ├─17647 /usr/bin/postmaster -D /var/lib/pgsql/data
             ├─17648 postgres: logger
             ├─17650 postgres: checkpointer
             ├─17651 postgres: background writer
             ├─17652 postgres: walwriter
             ├─17653 postgres: autovacuum launcher
             ├─17654 postgres: stats collector
             └─17655 postgres: logical replication launcher

Oct 26 15:18:52 ip-10-2-40-182.us-west-2.compute.internal systemd[1]: Starting PostgreSQL database server...
Oct 26 15:18:52 ip-10-2-40-182.us-west-2.compute.internal postmaster[17647]: 2021-10-26 15:18:52.998 UTC [17647] LOG:  redirecting log output to logging collector process
Oct 26 15:18:52 ip-10-2-40-182.us-west-2.compute.internal postmaster[17647]: 2021-10-26 15:18:52.998 UTC [17647] HINT:  Future log output will appear in directory "log".
Oct 26 15:18:53 ip-10-2-40-182.us-west-2.compute.internal systemd[1]: Started PostgreSQL database server.

El Active: active (running) muestra que el servicio está activo y funcionando.

A continuación, verifiquemos que la instalación se haya realizado correctamente conectándonos al servidor de la base de datos PostgreSQL e imprimiendo su versión:

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

Salida:

$ sudo -u postgres psql -c "SELECT version();"
could not change directory to "/home/fedora": Permission denied
                                                   version
--------------------------------------------------------------------------------------------------------------
 PostgreSQL 14.0 on x86_64-redhat-linux-gnu, compiled by gcc (GCC) 11.2.1 20210728 (Red Hat 11.2.1-1), 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á asociado con el postgres predeterminado role. 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

  1. Al cambiar a postres usuario

Cambie a la cuenta de postgres en su servidor escribiendo esto en la terminal;:

sudo -i -u postgres

Ahora puede acceder a un aviso de Postgres inmediatamente escribiendo:

$ psql
psql (14.0)
Type "help" for help.

postgres=#

Esto lo iniciará en el indicador de PostgreSQL, y desde aquí puede interactuar con el sistema de administración de la base de datos de inmediato.

2. Al ejecutar el comando como postgres usuario

Use esto para ejecutar el comando directamente como postgres usuario usando sudo

sudo -u postgres psql

Salida:

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

postgres=#

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 requeridas. El archivo de configuración principal para Postgresql 14 se puede encontrar en esta ruta /var/lib/pgsql/14/data/pg_hba.conf

Cambiemos la identificación de pares a confianza:

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

Cambie la identificación de identificación a md5 para permitir el inicio de sesión con contraseña.

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

Creación de superusuario

Ahora que todo está configurado, vamos a crear un superusuario.
Conéctese a la base de datos como rol de postres:

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

postgres=#

Crear superusuario con nombre root :

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

Salida:

postgres=# CREATE ROLE root WITH LOGIN SUPERUSER CREATEDB CREATEROLE PASSWORD 'passwordhere';
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                          | {}

postgres=#

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 Postgresql 14 en un servidor Fedora 34, realizar algunas configuraciones básicas y luego realizar una administración básica de usuarios.


Fedora
  1. Cómo instalar y configurar Postgres 13 Ubuntu 20.04

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

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

  4. Cómo instalar y configurar Postgres 14 en Debian 11

  5. Cómo instalar y configurar Mariadb en Fedora 35

Cómo instalar y configurar Nextcloud en Fedora 32

Cómo instalar PostgreSQL y phpPgAdmin en Fedora 34

Cómo instalar el servidor Fedora 34

Cómo instalar PostgreSQL 14 en Fedora Linux

Cómo instalar y configurar PostgreSQL en Ubuntu

Cómo instalar PostgreSQL en Fedora 35