GNU/Linux >> Linux Esercitazione >  >> Fedora

Come installare e configurare Postgres 14 su Fedora 34

Inizialmente era chiamato POSTGRES, riferendosi alle sue origini come successore del database Ingres sviluppato presso l'Università della California, a Berkeley. PostgreSQL è utilizzato come datastore o data warehouse principale per molte applicazioni web, mobili, geospaziali e di analisi. PostgreSQL può archiviare dati strutturati e non strutturati in un unico prodotto.

In questa guida installeremo Postgresql 14 in Fedora 34.

Contenuti correlati

  • Autorizzazioni Postgres:crea, aggiorna, elimina utenti del database
  • Come installare e configurare Postgres 14 su Centos 8
  • Come installare e configurare Postgres 13 su Centos 8
  • Eseguire Postgresql 14 con Docker e Docker-Compose
  • Come installare e configurare Postgres 13 Ubuntu 20.04
  • Come installare e configurare Postgres 14 su Debian 11
  • Come installare e configurare Postgres 14 Ubuntu 20.04
  • Come installare e configurare Postgres 14 su OpenSUSE Leap 15.3

Prerequisiti

Per seguire, assicurati di avere quanto segue:

  1. Server Fedora 34 aggiornato
  2. Accesso root al server o utente con accesso root
  3. Accesso a Internet dal server
  4. Conoscenza di base del terminale Linux

Indice

  1. Assicurati che il server sia aggiornato
  2. Installazione e avvio di Postgres Server
  3. Metodi di autenticazione dei database e dei ruoli PostgreSQL
  4. Connessione al database di Postgres
  5. Configurazione dell'istanza postgres 14 per l'accesso remoto
  6. Gestione utenti

1. Assicurati che il server sia aggiornato

Prima di procedere, assicuriamoci che il nostro server abbia pacchetti aggiornati. Usa questo 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. Installazione e avvio di Postgres Server

Il modulo fedora dnf postgres contiene un'installazione di Postgres 14 ma non è quella predefinita. Controlliamo il modulo Postges su Fedora usando questo 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

Ciò significa che per usarlo devi abilitarlo. Per prima cosa ripristina il modulo postgres in modo da non avere un predefinito

sudo dnf module reset postgresql

Quindi abilita postgres 14 con questo 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!

Ora installiamo Postgresql 14 e il pacchetto Contrib che fornisce diverse funzionalità aggiuntive per il sistema di database PostgreSQL:

sudo dnf install -y postgresql-server postgresql-contrib

Una volta completata l'installazione, inizializzare il database PostgreSQL con il seguente 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

Ora avvia il servizio:

sudo systemctl start postgresql

Quindi abilita il servizio in modo che si avvii al riavvio del server:

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

Conferma che Postgres 14 è in esecuzione:

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

Il Active: active (running) mostra che il servizio è attivo e funzionante.

Successivamente, verifichiamo che l'installazione sia andata a buon fine connettendoci al server di database PostgreSQL e stampandone la versione:

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

Uscita:

$ 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. Metodi di autenticazione dei database e dei ruoli PostgreSQL

PostgreSQL utilizza un concetto chiamato roles per gestire l'autenticazione e l'autorizzazione del client. Per impostazione predefinita, Postgres è impostato per utilizzare ident authentication , il che significa che associa i ruoli Postgres a un account di sistema Unix/Linux corrispondente. Se esiste un ruolo all'interno di Postgres, un nome utente Unix/Linux con lo stesso nome può accedere come quel ruolo.

La procedura di installazione ha creato un account utente chiamato postgres che è associato al valore predefinito postgres ruolo. Per utilizzare PostgreSQL, puoi accedere a quell'account.

PostgreSQL supporta più metodi di autenticazione. I metodi più comunemente usati sono:

  • Trust – Un ruolo può connettersi senza password, purché le condizioni definite in pg_hba.conf sono soddisfatte.
  • Password – Un ruolo può connettersi fornendo una password. Le password possono essere memorizzate come scram-sha-256 , md5 e password (clear-text ).
  • Ident – Supportato solo su connessioni TCP/IP. Funziona ottenendo il nome utente del sistema operativo del client, con una mappatura del nome utente opzionale.
  • Peer – Uguale a Ident, ma è supportato solo su connessioni locali.

4. Connessione al database postgres

  1. Passando a postres utente

Passa all'account postgres sul tuo server digitandolo nel terminale;:

sudo -i -u postgres

Ora puoi accedere immediatamente a un prompt di Postgres digitando:

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

postgres=#

Questo ti consentirà di accedere al prompt di PostgreSQL e da qui sarai libero di interagire immediatamente con il sistema di gestione del database.

2. Eseguendo il comando come postgres utente

Usalo per eseguire il comando direttamente come postgres utente che utilizza sudo

sudo -u postgres psql

Uscita:

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

postgres=#

5. Configurazione dell'istanza postgres 14 per l'accesso remoto

Per ottenere ciò, modificheremo i file di configurazione di Postgres. Dobbiamo aprire i file e regolare le configurazioni richieste. Il file di configurazione principale per Postgresql 14 può essere trovato in questo percorso /var/lib/pgsql/14/data/pg_hba.conf

Cambiamo l'identificazione dei pari in fiducia:

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

Modifica l'identificativo in md5 per consentire l'accesso con password.

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

Aggiungi un blocco per consentire l'accesso da qualsiasi luogo:

Aggiungi questo contenuto al file /var/lib/pgsql/data/pg_hba.conf

host    all             all             0.0.0.0/0                md5

Assicurati che PostgreSQL sia in ascolto su *

Aggiungi questa riga alla configurazione qui /var/lib/pgsql/data/postgresql.conf

listen_addresses='*'

Abilita e riavvia il server postgresql per ricaricare le configurazioni

sudo systemctl restart postgresql
sudo systemctl enable postgresql

6. Gestione utenti

Creazione di un superutente

Ora che tutto è impostato, creiamo un super utente.
Connettiti al DB come ruolo postres:

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

postgres=#

Crea super utente con nome root :

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

Uscita:

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=#

Gestione degli utenti dell'applicazione

Usalo per creare un database, creare un utente e concedere a quell'utente tutti gli accessi a quel database:

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

Dai un'occhiata a questa guida completa sulla gestione degli utenti e dei permessi in postgres qui.

Connessione all'istanza dall'host remoto

Usa questo comando per connetterti all'istanza postgres dalla macchina locale:

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

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

Conclusione

Fino a questo punto siamo riusciti a installare Postgresql 14 su un server Fedora 34, eseguire alcune configurazioni di base quindi eseguire la gestione utente di base.


Fedora
  1. Come installare e configurare Postgres 13 Ubuntu 20.04

  2. Come installare e configurare Postgres 13 su Centos 8

  3. Come installare e configurare Mysql Server 8 su Fedora 34/35

  4. Come installare e configurare Redis 6 su Fedora 34

  5. Come installare e configurare Ansible su Fedora 35

Come installare e configurare Nextcloud su Fedora 32

Come installare PostgreSQL e phpPgAdmin su Fedora 34

Come installare Fedora 34 Server

Come installare PostgreSQL 14 in Fedora Linux

Come installare e configurare PostgreSQL su Ubuntu

Come installare PostgreSQL su Fedora 35