custom background image

Comment installer une base de données PostgreSQL sur CentOS 7 ?


Installer une base de données PostgreSQL sur CentOS 7

Objectif

De son côté, PostgreSQL est l'une des bases de données les plus utilisées dans le monde. Sa simplicité d'utilisation et son approche open source sont autant d'éléments majeurs qui expliquent son adoption internationale. Pour en savoir plus sur les capacités de PostgreSQL, consultez la documentation officielle.

Dans ce tutoriel, nous allons apprendre à installer une base de données PostgreSQL sur le système de distribution Linux CentOS 7.

 

Exigences

Pour suivre ce tutoriel, vous devez disposer de CentOS 7 et l'exécuter sur une Instance Compute OVHcloud, par exemple. Quelques connaissances de base sur son fonctionnement sont également nécessaires. Si vous ne disposez pas de CentOS 7, suivez ce guide pour utiliser une Instance Compute OVHcloud.

 

Instructions

Dans ce tutoriel, vous allez commencer par installer une base de données PostgreSQL, puis vous allez créer votre propre base de données à partir de la première.

 

Installation de la base de données PostgreSQL

Au moment de la rédaction de ce tutoriel, la dernière version de PostgreSQL est la version 14.x. N'hésitez pas à consulter la documentation officielle, partie téléchargements, pour des versions plus anciennes ou plus récentes.

Tout d'abord, assurez-vous que votre système est à jour :

sudo yum update

Installez le dépôt 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

Le résultat s'affiche comme ceci :

$ 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é !

Installez 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é !

Initialisez la base de données et activez le démarrage automatique :

sudo /usr/pgsql-14/bin/postgresql-14-setup initdb sudo systemctl enable postgresql-14 sudo systemctl start postgresql-14

Ensuite, vous pouvez tester votre nouvelle installation :

sudo su - postgres psql

Le résultat s'affiche comme ceci :

$ sudo su - postgres
-bash-4.2$ psql
psql (14.2)
Type "help" for help.

postgres=# exit
-bash-4.2$ exit
$

Remarque : par défaut, l'installation de PostgreSQL crée un compte postgres. Il s'agit d'un compte super utilisateur pour la base de données. Faites attention lorsque vous l'utilisez. Les prochaines sections vous guident dans la création d'utilisateurs standard.

 

Ajout d'un utilisateur à PostgreSQL

Il existe deux manières d'ajouter un utilisateur dans PostgreSQL : les requêtes SQL et l'utilisation d'une commande bash. Dans ce tutoriel, nous nous pencherons uniquement sur la méthode SQL, qui est plus complète. Pour utiliser la commande bash, consultez la documentation officielle. Vous devez utiliser le compte par défaut de postgres et le CLI psql pour créer votre nouveau compte (voir ci-dessus pour vous connecter à psql).

Commencez par créer un rôle (une sorte de combinaison d'utilisateurs et de droits dans l'univers PostgreSQL) :

postgres=# CREATE USER foo WITH PASSWORD 'bar';

Le résultat s'affiche comme ceci :

postgres=# CREATE USER foo WITH PASSWORD 'bar';
CREATE ROLE
postgres=#

 

Création d'une base de données

Créez ensuite une base de données « example » dont le propriétaire est l'utilisateur « foo » :

postgres=# CREATE DATABASE example OWNER foo;
CREATE DATABASE
postgres=#

Ensuite, pour que votre nouvel utilisateur soit utilisable, vous devez créer un utilisateur Linux équivalent (les privilèges root sont obligatoires pour ce type de commande) :

$ sudo adduser foo

Le résultat s'affiche comme ceci :

$ sudo su -
Dernière connexion : jeudi 12 mai 2022 à 09:42:40 UTC sur pts/0
# adduser foo
# exit
$

Vous pouvez maintenant tester votre nouveau compte :

sudo su - foo psql -d example

Le résultat s'affiche comme ceci :

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

N'hésitez pas à dresser une liste de vos bases de données pour vérifier que tout fonctionne :

postgres=# \l

Le résultat s'affiche comme ceci :

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)

 

Création et utilisation d'un tableau

À ce stade, vous pouvez créer des tableaux et les utiliser.

Pour les commandes suivantes, servez-vous de l'utilisateur foo que vous venez de créer.

example=> CREATE TABLE first_table (id INT PRIMARY KEY NOT NULL, column1 CHAR(50));

Le résultat s'affiche comme ceci :

example=> CREATE TABLE first_table (id INT PRIMARY KEY NOT NULL, column1 CHAR(50));
CREATE TABLE
example=> 

Utilisez la commande first_table dans les requêtes SQL :

example=> INSERT INTO first_table (id, column1) VALUES (1, 'example'); example=> SELECT * FROM first_table;

Le résultat s'affiche comme ceci :

example=> INSERT INTO first_table (id, column1) VALUES (1, 'example');
INSERT 0 1

example=> SELECT * FROM first_table;
 id |                      column1                       
----+----------------------------------------------------
  1 | example                                           
(1 row)

Félicitations, vous venez d'installer et de configurer une base de données PostgreSQL sur CentOS 7 !

Aller plus loin

Consultez les offres de base de données managée PostgreSQL et d'instance Public Cloud chez OVHcloud.