Postgresql est un système de base de données relationnelle objet open source avec plus de 30 ans de développement actif qui lui a valu une solide réputation de fiabilité, de robustesse des fonctionnalités et de performances. Postgres, est un système de gestion de base de données relationnelle libre et open-source mettant l'accent sur l'extensibilité et la conformité SQL. Il s'appelait à l'origine POSTGRES, faisant référence à ses origines en tant que successeur de la base de données Ingres développée à l'Université de Californie à Berkeley. PostgreSQL est utilisé comme magasin de données principal ou entrepôt de données pour de nombreuses applications Web, mobiles, géospatiales et analytiques. PostgreSQL peut stocker des données structurées et non structurées dans un seul produit.
Vérifiez-les également :
- Comment installer et configurer Postgres 14 sur FreeBSD 13
- Autorisations Postgres – Créer, mettre à jour, supprimer des utilisateurs de base de données
- Comment installer et configurer Postgres 13 sur Centos 8
- Exécuter Postgresql 14 avec Docker et Docker-Compose
- Comment installer et configurer Postgres 13 Ubuntu 20.04
- Comment installer et configurer Postgres 14 sur Debian 11
- Comment installer et configurer Postgres 14 Ubuntu 20.04
- Comment installer et configurer Postgres 14 sur Fedora 34
- Comment installer et configurer Postgres 14 sur OpenSUSE Leap 15.3
Prérequis
Pour suivre, assurez-vous d'avoir les éléments suivants :
- Serveur basé sur Rocky Linux/Alma Linux/Centos 8 ou RHEL 8
- Accès root au serveur ou utilisateur avec accès root
- Accès Internet depuis le serveur
- Connaissance de base du terminal Linux
Table des matières
- Assurez-vous que le serveur est à jour
- Installation et démarrage du serveur Postgres
- Méthodes d'authentification des rôles et des bases de données PostgreSQL
- Connexion à la base de données postgres
- Configuration de l'instance postgres 14 pour l'accès à distance
- Gestion des utilisateurs
1. Assurez-vous que le serveur est à jour
Avant de continuer, assurons-nous que notre serveur dispose de packages à jour. Utilisez cette commande :
$ sudo dnf -y update
Last metadata expiration check: 2:52:07 ago on Wed 06 Oct 2021 01:26:21 AM UTC.
Dependencies resolved.
Nothing to do.
Complete!
2. Installation et démarrage du serveur Postgres
Par défaut, le module postgres aura une ancienne version de postgres activée. Mais le module actuel n'inclut pas postgresql 14. Confirmez avec cette commande :
$ sudo dnf module list postgresql
Last metadata expiration check: 2:52:36 ago on Wed 06 Oct 2021 01:26:21 AM UTC.
CentOS Linux 8 - AppStream
Name Stream Profiles Summary
postgresql 9.6 client, server [d] PostgreSQL server and client module
postgresql 10 [d] client, server [d] PostgreSQL server and client module
postgresql 12 client, server [d] PostgreSQL server and client module
postgresql 13 client, server [d] PostgreSQL server and client module
Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
L'installation à partir des modules installera une ancienne version de postgres (10) mais ce n'est pas ce que nous voulons.
Nous utiliserons le référentiel fourni par l'équipe postgres pour configurer des référentiels pour postgres 14, puis installerons le package.
Installons le RPM du référentiel à l'aide de cette commande :
sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
Ensuite, pour éviter les conflits, désactivons le module PostgreSQL intégré :
sudo dnf -qy module disable postgresql
Installez enfin le serveur PostgreSQL 14 :
sudo dnf install -y postgresql14-server
Installons également le package Contrib qui fournit plusieurs fonctionnalités supplémentaires pour le système de base de données PostgreSQL :
sudo dnf install -y postgresql14-contrib
Une fois l'installation terminée, initialisez la base de données PostgreSQL avec la commande suivante :
$ sudo /usr/pgsql-14/bin/postgresql-14-setup initdb
Initializing database ... OK
Démarrez le service postgres avec cette commande :
sudo systemctl start postgresql-14
Activez ensuite le service pour qu'il démarre au redémarrage du serveur.
$ sudo systemctl enable postgresql-14
Created symlink /etc/systemd/system/multi-user.target.wants/postgresql-14.service → /usr/lib/systemd/system/postgresql-14.service.
Confirmez que Postgres est en cours d'exécution :
$ 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 Wed 2021-10-06 04:26:52 UTC; 33s ago
Docs: https://www.postgresql.org/docs/14/static/
Process: 1018631 ExecStartPre=/usr/pgsql-14/bin/postgresql-14-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS)
Main PID: 1018637 (postmaster)
Tasks: 8 (limit: 23800)
Memory: 17.2M
CGroup: /system.slice/postgresql-14.service
├─1018637 /usr/pgsql-14/bin/postmaster -D /var/lib/pgsql/14/data/
├─1018638 postgres: logger
├─1018640 postgres: checkpointer
├─1018641 postgres: background writer
├─1018642 postgres: walwriter
├─1018643 postgres: autovacuum launcher
├─1018644 postgres: stats collector
└─1018645 postgres: logical replication launcher
Oct 06 04:26:52 test-db-server systemd[1]: Starting PostgreSQL 14 database server...
Oct 06 04:26:52 test-db-server postmaster[1018637]: 2021-10-06 04:26:52.204 UTC [1018637] LOG: redirecting log output to logging collector process
Oct 06 04:26:52 test-db-server postmaster[1018637]: 2021-10-06 04:26:52.204 UTC [1018637] HINT: Future log output will appear in directory "log".
Oct 06 04:26:52 test-db-server systemd[1]: Started PostgreSQL 14 database server.
Le Active: active (running)
indique que le service est opérationnel.
Ensuite, vérifions que l'installation a réussi en nous connectant au serveur de base de données PostgreSQL et en imprimant sa version :
sudo -u postgres psql -c "SELECT version();"
Sortie :
$ sudo -u postgres psql -c "SELECT version();"
version
--------------------------------------------------------------------------------------------------------
PostgreSQL 14.0 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 8.4.1 20200928 (Red Hat 8.4.1-1), 64-bit
(1 row)
3. Méthodes d'authentification des rôles et des bases de données PostgreSQL
PostgreSQL utilise un concept appelé roles
pour gérer l'authentification et l'autorisation du client. Par défaut, Postgres est configuré pour utiliser ident authentication
, ce qui signifie qu'il associe des rôles Postgres à un compte système Unix/Linux correspondant. Si un rôle existe dans Postgres, un nom d'utilisateur Unix/Linux portant le même nom peut se connecter avec ce rôle.
La procédure d'installation a créé un compte utilisateur appelé postgres
qui est associé au postgres
par défaut rôle. Pour utiliser PostgreSQL, vous pouvez vous connecter à ce compte.
PostgreSQL prend en charge plusieurs méthodes d'authentification. Les méthodes les plus couramment utilisées sont :
Trust
– Un rôle peut se connecter sans mot de passe, tant que les conditions définies dans lepg_hba.conf
sont remplies.Password
– Un rôle peut se connecter en fournissant un mot de passe. Les mots de passe peuvent être stockés sous la formescram-sha-256
,md5
, etpassword
(clear-text
).Ident
– Uniquement pris en charge sur les connexions TCP/IP. Il fonctionne en obtenant le nom d'utilisateur du système d'exploitation du client, avec un mappage de nom d'utilisateur facultatif.Peer
– Identique à Ident, mais il n'est pris en charge que sur les connexions locales.
4. Connexion à la base de données postgres
- En passant à
postres
utilisateur
Basculez vers le compte postgres sur votre serveur en tapant ceci dans le terminal ; :
sudo -i -u postgres
Vous pouvez désormais accéder immédiatement à une invite Postgres en tapant :
$ psql
psql (14.0)
Type "help" for help.
postgres=#
Cela vous connectera à l'invite PostgreSQL, et à partir de là, vous serez libre d'interagir immédiatement avec le système de gestion de base de données.
2. En exécutant la commande en tant que postgres
utilisateur
Utilisez ceci pour exécuter la commande directement en tant que postgres
utilisateur utilisant sudo
sudo -u postgres psql
Sortie :
$ sudo -u postgres psql
psql (14.0)
Type "help" for help.
postgres=#
5. Configuration de l'instance postgres 14 pour l'accès à distance
Pour y parvenir, nous allons modifier les fichiers de configuration de postgres. Nous devons ouvrir les fichiers et ajuster les configurations sont nécessaires. Le fichier de configuration principal pour Postgresql 14 se trouve dans ce chemin /var/lib/pgsql/14/data/pg_hba.conf
Changeons l'identification des pairs en confiance :
sed -i '/^local/s/peer/trust/' /var/lib/pgsql/14/data/pg_hba.conf
Remplacez l'identification par md5 pour autoriser la connexion par mot de passe.
sed -i '/^host/s/ident/md5/' /var/lib/pgsql/14/data/pg_hba.conf
Ajoutez un bloc pour autoriser l'accès depuis n'importe où :
Ajoutez ce contenu au fichier /var/lib/pgsql/14/data/pg_hba.conf
host all all 0.0.0.0/0 md5
Assurez-vous que PostgreSQL écoute sur *
Ajoutez cette ligne à la configuration ici /var/lib/pgsql/14/data/postgresql.conf
listen_addresses='*'
Activer et redémarrer le serveur postgresql pour recharger les configurations
sudo systemctl restart postgresql
sudo systemctl enable postgresql
6. Gestion des utilisateurs
Créer un superutilisateur
Maintenant que tout est configuré, créons un super utilisateur.
Connectez-vous à la base de données en tant que rôle postres :
$ sudo -u postgres psql
psql (14.0)
Type "help" for help.
postgres=#
Créer un super utilisateur avec le nom root
:
CREATE ROLE root WITH LOGIN SUPERUSER CREATEDB CREATEROLE PASSWORD 'passwordhere';
Sortie :
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=#
Gestion des utilisateurs de l'application
Utilisez ceci pour créer une base de données, créer un utilisateur et accorder à cet utilisateur tous les accès à cette base de données :
create database app_db_name;
create user app_user with encrypted password 'dbpassword';
grant all privileges on database app_db_name to app_user;
Consultez ce guide complet sur la gestion des utilisateurs et des autorisations dans postgres ici.
Connexion à l'instance depuis un hôte distant
Utilisez cette commande pour vous connecter à l'instance postgres à partir de la machine locale :
psql 'postgres://<username>:<password>@<host>:<port>/<db>?sslmode=disable'
# like
psql 'postgres://root:[email protected]:5432/postgres?sslmode=disable'
Conclusion
Jusqu'à présent, nous avons réussi à installer Postgresql 14 sur un serveur Ceentos 8, à effectuer quelques configurations de base, puis à gérer les utilisateurs de base.