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 OpenSUSE Leap 15.3
Contenuti correlati
- Come installare e configurare Postgres 14 su FreeBSD 13
- 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 Fedora 34
Prerequisiti
Per seguire, assicurati di avere quanto segue:
- Server Opensuse Leap 15 aggiornato
- Accesso root al server o utente con accesso root
- Accesso a Internet dal server
- Conoscenza di base del terminale Linux
Indice
- Assicurati che il server sia aggiornato
- Installazione e avvio di Postgres Server
- Metodi di autenticazione dei database e dei ruoli PostgreSQL
- Connessione al database di Postgres
- Configurazione dell'istanza postgres 14 per l'accesso remoto
- Gestione utenti in Postgres 14
1. Assicurati che il server sia aggiornato
Prima di procedere, assicuriamoci che il nostro server abbia pacchetti aggiornati. Innanzitutto, aggiorna il database del pacchetto repo
~> sudo zypper ref
Repository 'Update repository of openSUSE Backports' is up to date.
Repository 'Debug Repository' is up to date.
Repository 'Update Repository (Debug)' is up to date.
Repository 'Non-OSS Repository' is up to date.
Repository 'Main Repository' is up to date.
Repository 'Update repository with updates from SUSE Linux Enterprise 15' is up to date.
Repository 'Source Repository' is up to date.
Repository 'Main Update Repository' is up to date.
Repository 'Update Repository (Non-Oss)' is up to date.
All repositories have been refreshed.
Quindi usa questo comando per aggiornare i pacchetti:
~> sudo zypper up
Retrieving repository 'Update repository with updates from SUSE Linux Enterprise 15' metadata ...................................[done]
Building repository 'Update repository with updates from SUSE Linux Enterprise 15' cache ........................................[done]
Loading repository data...
Reading installed packages...
Nothing to do.
2. Installazione e avvio di Postgres Server
Per impostazione predefinita, Opensuse Leap non contiene repository Postgresql. Utilizzeremo il repository fornito dal team di postgres per impostare i repository per Postgres 14. Questo ci consentirà di installare Postgres.
Installiamo il repository Postgres usando questo comando:
sudo zypper addrepo https://download.postgresql.org/pub/repos/zypp/repo/pgdg-sles-15-pg14.repo
Quindi prima dell'installazione, aggiorna i repository usando questo comando:
sudo zypper ref
Infine installa il server PostgreSQL 14. Stiamo anche installando il pacchetto Contrib che fornisce diverse funzionalità aggiuntive per il sistema di database PostgreSQL:
sudo zypper in postgresql14-server postgresql14-contrib
Una volta completata l'installazione, inizializzare il database PostgreSQL con il seguente comando:
~> sudo /usr/pgsql-14/bin/postgresql-14-setup initdb
Initializing database ... OK
Avvia il postgres usando questo comando:
sudo systemctl start postgresql-14
Quindi abilita il servizio in modo che si avvii al riavvio del server.
~> sudo systemctl enable postgresql-14
Created symlink /etc/systemd/system/multi-user.target.wants/postgresql-14.service → /usr/lib/systemd/system/postgresql-14.service.
Conferma che Postgres è in esecuzione:
~> sudo systemctl status postgresql-14
● postgresql-14.service - PostgreSQL 14 database server
Loaded: loaded (/usr/lib/systemd/system/postgresql-14.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2021-10-26 18:52:54 UTC; 38s ago
Docs: https://www.postgresql.org/docs/14/static/
Main PID: 26244 (postmaster)
Tasks: 8 (limit: 4587)
CGroup: /system.slice/postgresql-14.service
├─26244 /usr/pgsql-14/bin/postmaster -D /var/lib/pgsql/14/data/
├─26245 postgres: logger
├─26247 postgres: checkpointer
├─26248 postgres: background writer
├─26249 postgres: walwriter
├─26250 postgres: autovacuum launcher
├─26251 postgres: stats collector
└─26252 postgres: logical replication launcher
Oct 26 18:52:54 ip-10-2-40-60 systemd[1]: Starting PostgreSQL 14 database server...
Oct 26 18:52:54 ip-10-2-40-60 postmaster[26244]: 2021-10-26 18:52:54.691 UTC [26244] LOG: redirecting log output to logging collector>
Oct 26 18:52:54 ip-10-2-40-60 postmaster[26244]: 2021-10-26 18:52:54.691 UTC [26244] HINT: Future log output will appear in directory>
Oct 26 18:52:54 ip-10-2-40-60 systemd[1]: Started PostgreSQL 14 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();"
version
------------------------------------------------------------------------------------
PostgreSQL 14.0 on x86_64-pc-linux-gnu, compiled by gcc (SUSE Linux) 7.5.0, 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 inpg_hba.conf
sono soddisfatte.Password
– Un ruolo può connettersi fornendo una password. Le password possono essere memorizzate comescram-sha-256
,md5
epassword
(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
- 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/14/data/pg_hba.conf
Modifica l'identificativo in md5 per consentire l'accesso con password.
sed -i '/^host/s/ident/md5/' /var/lib/pgsql/14/data/pg_hba.conf
Aggiungi un blocco per consentire l'accesso da qualsiasi luogo:
Aggiungi questo contenuto al file /var/lib/pgsql/14/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/14/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 Opensuse Leap 15.3, eseguire alcune configurazioni di base quindi eseguire la gestione utente di base.