Come installare un database PostgreSQL su Centos 7
Installa un database PostgreSQL su Centos 7
Obiettivo
PostgreSQL è uno dei database più famosi al mondo, principalmente grazie alla semplicità di utilizzo e l’approccio open source. Per ulteriori informazioni sulle funzionalità di PostgreSQL, consulta ladocumentazione ufficiale.
In questo tutorial imparerai a installare un database PostgreSQL sulla distribuzione Centos 7 Linux.
Requisiti
Questo tutorial presuppone che tu possieda un’istanza Public Cloud Compute OVHcloud, un VPS o un server Bare Metal su cui è in esecuzione Centos 7 e conoscenze di base sull’uso della riga di comando. In questo tutorial abbiamo utilizzato un’istanza Public Cloud Compute. Se hai bisogno di aiuto per installare la tua istanza Public Cloud con Centos 7, consulta questa guida: Creare e connettersi a un’istanza Public Cloud.
Procedura
In questo tutorial installerai un database PostgreSQL e poi creerai un database.
Installazione del database PostgreSQL
Al momento della pubblicazione di questo tutorial, l'ultima versione di PostgreSQL è 14.x. Consulta la sezione download della documentazione ufficiale per scoprire tutte le versioni disponibili.
Per prima cosa, assicurati che il sistema sia aggiornato:
sudo yum update
Installa il repository RPM:
# Install the repository RPM: sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
Output:
$ sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm Modules complémentaires chargés : fastestmirror pgdg-redhat-repo-latest.noarch.rpm | 8.1 kB 00:00 Examen de /var/tmp/yum-root-4xEZ6S/pgdg-redhat-repo-latest.noarch.rpm : pgdg-redhat-repo-42.0-24.noarch Sélection de /var/tmp/yum-root-4xEZ6S/pgdg-redhat-repo-latest.noarch.rpm pour installation Résolution des dépendances --> Lancement de la transaction de test ---> Le paquet pgdg-redhat-repo.noarch 0:42.0-24 sera installé --> Résolution des dépendances terminée Dépendances résolues ========================================================================================= Package Architecture Version Dépôt Taille ========================================================================================= Installation : pgdg-redhat-repo noarch 42.0-24 /pgdg-redhat-repo-latest.noarch 11 k Résumé de la transaction ========================================================================================= Installation 1 Paquet Taille totale : 11 k Taille d'installation : 11 k Downloading packages: Running transaction check Running transaction test Transaction test succeeded Running transaction Installation : pgdg-redhat-repo-42.0-24.noarch 1/1 Vérification : pgdg-redhat-repo-42.0-24.noarch 1/1 Installé : pgdg-redhat-repo.noarch 0:42.0-24 Terminé !
Ora installa PostgreSQL:
sudo yum install -y postgresql14-server
$ sudo yum install -y postgresql14-server Modules complémentaires chargés : fastestmirror Loading mirror speeds from cached hostfile * base: centos.mirrors.proxad.net * extras: centos.mirrors.proxad.net * updates: centos.mirrors.proxad.net pgdg-common/7/x86_64/signature | 198 B 00:00 Récupération de la clé à partir de file:///etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG Importation de la clef GPG 0x442DF0F8 : ID utilisateur : « PostgreSQL RPM Building Project » Empreinte : 68c9 e2b9 1a37 d136 fe74 d176 1f16 d2e1 442d f0f8 Paquet : pgdg-redhat-repo-42.0-24.noarch (@/pgdg-redhat-repo-latest.noarch) Provient de : /etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG pgdg-common/7/x86_64/signature | 2.9 kB 00:00 !!! pgdg10/7/x86_64/signature | 198 B 00:00 Récupération de la clé à partir de file:///etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG Importation de la clef GPG 0x442DF0F8 : ID utilisateur : « PostgreSQL RPM Building Project » Empreinte : 68c9 e2b9 1a37 d136 fe74 d176 1f16 d2e1 442d f0f8 Paquet : pgdg-redhat-repo-42.0-24.noarch (@/pgdg-redhat-repo-latest.noarch) Provient de : /etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG pgdg10/7/x86_64/signature | 3.6 kB 00:00 !!! pgdg11/7/x86_64/signature | 198 B 00:00 Récupération de la clé à partir de file:///etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG Importation de la clef GPG 0x442DF0F8 : ID utilisateur : « PostgreSQL RPM Building Project » Empreinte : 68c9 e2b9 1a37 d136 fe74 d176 1f16 d2e1 442d f0f8 Paquet : pgdg-redhat-repo-42.0-24.noarch (@/pgdg-redhat-repo-latest.noarch) Provient de : /etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG pgdg11/7/x86_64/signature | 3.6 kB 00:00 !!! pgdg12/7/x86_64/signature | 198 B 00:00 Récupération de la clé à partir de file:///etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG Importation de la clef GPG 0x442DF0F8 : ID utilisateur : « PostgreSQL RPM Building Project » Empreinte : 68c9 e2b9 1a37 d136 fe74 d176 1f16 d2e1 442d f0f8 Paquet : pgdg-redhat-repo-42.0-24.noarch (@/pgdg-redhat-repo-latest.noarch) Provient de : /etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG pgdg12/7/x86_64/signature | 3.6 kB 00:00 !!! pgdg13/7/x86_64/signature | 198 B 00:00 Récupération de la clé à partir de file:///etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG Importation de la clef GPG 0x442DF0F8 : ID utilisateur : « PostgreSQL RPM Building Project » Empreinte : 68c9 e2b9 1a37 d136 fe74 d176 1f16 d2e1 442d f0f8 Paquet : pgdg-redhat-repo-42.0-24.noarch (@/pgdg-redhat-repo-latest.noarch) Provient de : /etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG pgdg13/7/x86_64/signature | 3.6 kB 00:00 !!! pgdg14/7/x86_64/signature | 198 B 00:00 Récupération de la clé à partir de file:///etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG Importation de la clef GPG 0x442DF0F8 : ID utilisateur : « PostgreSQL RPM Building Project » Empreinte : 68c9 e2b9 1a37 d136 fe74 d176 1f16 d2e1 442d f0f8 Paquet : pgdg-redhat-repo-42.0-24.noarch (@/pgdg-redhat-repo-latest.noarch) Provient de : /etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG pgdg14/7/x86_64/signature | 3.6 kB 00:00 !!! (1/11): pgdg11/7/x86_64/group_gz | 245 B 00:00 (2/11): pgdg10/7/x86_64/group_gz | 245 B 00:00 (3/11): pgdg12/7/x86_64/group_gz | 245 B 00:00 (4/11): pgdg13/7/x86_64/group_gz | 246 B 00:00 (5/11): pgdg-common/7/x86_64/primary_db | 162 kB 00:00 (6/11): pgdg10/7/x86_64/primary_db | 371 kB 00:01 (7/11): pgdg14/7/x86_64/group_gz | 244 B 00:00 (8/11): pgdg11/7/x86_64/primary_db | 400 kB 00:01 (9/11): pgdg14/7/x86_64/primary_db | 98 kB 00:00 (10/11): pgdg12/7/x86_64/primary_db | 277 kB 00:00 (11/11): pgdg13/7/x86_64/primary_db | 181 kB 00:00 Résolution des dépendances --> Lancement de la transaction de test ---> Le paquet postgresql14-server.x86_64 0:14.2-1PGDG.rhel7 sera installé --> Traitement de la dépendance : postgresql14-libs(x86-64) = 14.2-1PGDG.rhel7 pour le paquet : postgresql14-server-14.2-1PGDG.rhel7.x86_64 --> Traitement de la dépendance : postgresql14(x86-64) = 14.2-1PGDG.rhel7 pour le paquet : postgresql14-server-14.2-1PGDG.rhel7.x86_64 --> Traitement de la dépendance : libpq.so.5()(64bit) pour le paquet : postgresql14-server-14.2-1PGDG.rhel7.x86_64 --> Traitement de la dépendance : libicuuc.so.50()(64bit) pour le paquet : postgresql14-server-14.2-1PGDG.rhel7.x86_64 --> Traitement de la dépendance : libicui18n.so.50()(64bit) pour le paquet : postgresql14-server-14.2-1PGDG.rhel7.x86_64 --> Lancement de la transaction de test ---> Le paquet libicu.x86_64 0:50.2-4.el7_7 sera installé ---> Le paquet postgresql14.x86_64 0:14.2-1PGDG.rhel7 sera installé ---> Le paquet postgresql14-libs.x86_64 0:14.2-1PGDG.rhel7 sera installé --> Résolution des dépendances terminée Dépendances résolues ========================================================================================= Package Architecture Version Dépôt Taille ========================================================================================= Installation : postgresql14-server x86_64 14.2-1PGDG.rhel7 pgdg14 5.5 M Installation pour dépendances : libicu x86_64 50.2-4.el7_7 base 6.9 M postgresql14 x86_64 14.2-1PGDG.rhel7 pgdg14 1.5 M postgresql14-libs x86_64 14.2-1PGDG.rhel7 pgdg14 267 k Résumé de la transaction ========================================================================================= Installation 1 Paquet (+3 Paquets en dépendance) Taille totale des téléchargements : 14 M Taille d'installation : 55 M Downloading packages: (1/4): libicu-50.2-4.el7_7.x86_64.rpm | 6.9 MB 00:00 warning: /var/cache/yum/x86_64/7/pgdg14/packages/postgresql14-libs-14.2-1PGDG.rhel7.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID 442df0f8: NOKEY La clé publique pour postgresql14-libs-14.2-1PGDG.rhel7.x86_64.rpm n'est pas installée (2/4): postgresql14-libs-14.2-1PGDG.rhel7.x86_64.rpm | 267 kB 00:01 (3/4): postgresql14-14.2-1PGDG.rhel7.x86_64.rpm | 1.5 MB 00:01 (4/4): postgresql14-server-14.2-1PGDG.rhel7.x86_64.rpm | 5.5 MB 00:00 -------------------------------------------------------------------------------- Total 7.5 MB/s | 14 MB 00:01 Récupération de la clé à partir de file:///etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG Importation de la clef GPG 0x442DF0F8 : ID utilisateur : « PostgreSQL RPM Building Project » Empreinte : 68c9 e2b9 1a37 d136 fe74 d176 1f16 d2e1 442d f0f8 Paquet : pgdg-redhat-repo-42.0-24.noarch (@/pgdg-redhat-repo-latest.noarch) Provient de : /etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG Running transaction check Running transaction test Transaction test succeeded Running transaction Installation : postgresql14-libs-14.2-1PGDG.rhel7.x86_64 1/4 Installation : libicu-50.2-4.el7_7.x86_64 2/4 Installation : postgresql14-14.2-1PGDG.rhel7.x86_64 3/4 Installation : postgresql14-server-14.2-1PGDG.rhel7.x86_64 4/4 Vérification : libicu-50.2-4.el7_7.x86_64 1/4 Vérification : postgresql14-libs-14.2-1PGDG.rhel7.x86_64 2/4 Vérification : postgresql14-server-14.2-1PGDG.rhel7.x86_64 3/4 Vérification : postgresql14-14.2-1PGDG.rhel7.x86_64 4/4 Installé : postgresql14-server.x86_64 0:14.2-1PGDG.rhel7 Dépendances installées : libicu.x86_64 0:50.2-4.el7_7 postgresql14.x86_64 0:14.2-1PGDG.rhel7 postgresql14-libs.x86_64 0:14.2-1PGDG.rhel7 Terminé !
Inizializza il database e attiva l'avvio automatico:
sudo /usr/pgsql-14/bin/postgresql-14-setup initdb sudo systemctl enable postgresql-14 sudo systemctl start postgresql-14
Testa la tua installazione:
sudo su - postgres psql
Output:
$ sudo su - postgres -bash-4.2$ psql psql (14.2) Type "help" for help. postgres=# exit -bash-4.2$ uscita $
NB: l'installazione di PostgreSQL crea di default un account postgres. Questo account è un account superutente per il database. Fai attenzione quando lo utilizzi.
Aggiungere un utente a PostgreSQL
È possibile aggiungere un utente in PostgreSQL in due modi: con richieste SQL o con un comando in bash. In questo tutorial utilizzeremo solo la modalità SQL perché è più completa. Per informazioni sull'utilizzo del comando bash, consulta la documentazione ufficiale. Per creare il tuo nuovo account, utilizza l'account predefinito postgres e l'interfaccia CLI psql.
Sarà necessario creare un ruolo (una sorta di combinazione di utenti e diritti nel mondo PostgreSQL):
postgres=# CREATE USER foo WITH PASSWORD 'bar';
Output:
postgres=# CREATE USER foo WITH PASSWORD 'bar'; CREATE ROLE postgres=#
Creare un database
Crea un database con i nomi "esempio" per l’utente e "foo" per il proprietario:
postgres=# CREATE DATABASE example OWNER foo; CREATE DATABASE postgres=#
Per utilizzare il tuo nuovo account utente, crea un utente linux equivalente (per questo tipo di comando è obbligatorio avere i permessi di root):
$ sudo adduser foo
Output:
$ sudo su - Dernière connexion : jeudi 12 mai 2022 à 09:42:40 UTC sur pts/0 # adduser foo # exit $
Testa il tuo nuovo account:
sudo su - foo psql -d example
Output:
$ sudo su - foo Dernière connexion : jeudi 12 mai 2022 à 10:09:42 UTC sur pts/0 $ psql -d example psql (14.2) Type "help" for help. example=>
Elenca i database:
postgres=# \l
Output:
postgres=# \l example=> \l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -----------+----------+----------+-------------+-------------+----------------------- example | foo | UTF8 | en_US.UTF-8 | en_US.UTF-8 | postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres (4 rows)
Creare una tabella e utilizzarla
Creare tabelle e utilizzarle.
Per i seguenti comandi utilizzare l'utente foo creato in precedenza.
example=> CREATE TABLE first_table (id INT PRIMARY KEY NOT NULL, column1 CHAR(50));
Output:
example=> CREATE TABLE first_table (id INT PRIMARY KEY NOT NULL, column1 CHAR(50)); CREATE TABLE example=>
A questo punto, puoi utilizzare la tabella first_table nelle query SQL:
example=> INSERT INTO first_table (id, column1) VALUES (1, 'example'); example=> SELECT * FROM first_table;
Output:
example=> INSERT INTO first_table (id, column1) VALUES (1, 'example'); INSERT 0 1 example=> SELECT * FROM first_table; id | column1 ----+---------------------------------------------------- 1 | example (1 row)
Ci siamo: hai installato e configurato correttamente un database PostgreSQL su Centos 7.