PostgreSQL est un puissant 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 :
- Autorisations Postgres – Créer, mettre à jour, supprimer des utilisateurs de base de données
- Comment installer et configurer Postgres 14 sur Centos 8
- Exécuter Postgresql 14 avec Docker et Docker-Compose
- Comment installer et configurer Postgres 13 Ubuntu 20.04
Prérequis
Pour suivre, assurez-vous d'avoir les éléments suivants :
- Serveur basé sur Centos 8/Rocky Linux 8/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!
Installation et démarrage du serveur Postgres
Répertoriez les flux disponibles pour le module postgresql à l'aide de la commande dnf :
dnf module list postgresql
Sortie :
# dnf module list postgresql
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
le module marqué avec [d]
est la valeur par défaut, donc installer postgres sans spécifier que Stream l'installera. Dans notre cas, la commande suivante installe postgres 10
sudo dnf install @postgresql
Ceci est la version installée
$ sudo dnf list installed | grep postgres
postgresql.x86_64 10.17-1.module_el8.4.0+823+f0dbe136 @appstream
postgresql-server.x86_64 10.17-1.module_el8.4.0+823+f0dbe136 @appstream
Comme ce n'est pas le package que je veux, je vais le désinstaller avec ceci
sudo dnf erase -y @postgresql
Maintenant, installons postgresql 13. Nous allons d'abord réinitialiser le module postgresql pour nous assurer qu'il n'y en a pas d'installé.
sudo dnf module reset postgresql
sudo dnf install @postgresql:13
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 postgresql-contrib
Une fois l'installation terminée, initialisez la base de données PostgreSQL avec la commande suivante :
sudo postgresql-setup postgresql-setup --initdb --unit postgresql
Sortie :
* Initializing database in '/var/lib/pgsql/data'
* Initialized, logs are in /var/lib/pgsql/initdb_postgresql.log
Démarrez le service PostgreSQL et activez-le pour qu'il démarre au démarrage :
sudo systemctl enable --now postgresql
Vérifier l'état de la base de données
# systemctl status postgresql
● postgresql.service - PostgreSQL database server
Loaded: loaded (/usr/lib/systemd/system/postgresql.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2021-08-05 08:15:07 UTC; 7s ago
Process: 68683 ExecStartPre=/usr/libexec/postgresql-check-db-dir postgresql (code=exited, status=0/SUCCESS)
Main PID: 68686 (postmaster)
Tasks: 8 (limit: 23506)
Memory: 17.3M
CGroup: /system.slice/postgresql.service
├─68686 /usr/bin/postmaster -D /var/lib/pgsql/data
├─68687 postgres: logger
├─68689 postgres: checkpointer
├─68690 postgres: background writer
├─68691 postgres: walwriter
├─68692 postgres: autovacuum launcher
├─68693 postgres: stats collector
└─68694 postgres: logical replication launcher
Aug 05 08:15:07 prod-db systemd[1]: Starting PostgreSQL database server...
Aug 05 08:15:07 prod-db postmaster[68686]: 2021-08-05 08:15:07.650 UTC [68686] LOG: redirecting log output to logging collector process
Aug 05 08:15:07 prod-db postmaster[68686]: 2021-08-05 08:15:07.650 UTC [68686] HINT: Future log output will appear in directory "log".
Aug 05 08:15:07 prod-db systemd[1]: Started PostgreSQL database server.
Le Active: active (running)
montre que notre serveur postgres est opérationnel et fonctionne comme prévu.
Vérifiez l'installation en vous connectant au serveur de base de données PostgreSQL et imprimez sa version :
sudo -u postgres psql -c "SELECT version();"
Sortie :
version
------------------------------------------------------------------------------------------------------------
PostgreSQL 13.3 on x86_64-redhat-linux-gnu, compiled by gcc (GCC) 8.3.1 20191121 (Red Hat 8.3.1-5), 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 d'utilisateur appelé postgres qui est associé au rôle postgres par défaut. 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
Il existe plusieurs façons de se connecter au serveur postgres en tant qu'utilisateur postgres :
- En passant à
postres
user
Basculez vers le compte postgres sur votre serveur en tapant :sudo -i -u postgres
Vous pouvez désormais accéder immédiatement à une invite Postgres en tapant :
[[email protected]-server ~]$ psql psql (13.3) Type "help" for help.
postgres=#
This will log you into the PostgreSQL prompt, and from here you are free to interact with the database management system right away.
2. By running the command as postgres user
Use this to run the command directly as the postgres
user using sudo
```bash
sudo -u postgres psql
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 Postgresql 13 se trouve dans ce chemin /var/lib/pgsql/data/pg_hba.conf
.
Remplacez l'identification par les pairs par approuvée :
sed -i '/^local/s/peer/trust/' /var/lib/pgsql/data/pg_hba.conf
Changer l'identification d'identité en md5
sed -i '/^host/s/ident/md5/' /var/lib/pgsql/data/pg_hba.conf
Ajoutez un bloc pour autoriser l'accès depuis n'importe où :
Ajoutez ce contenu au fichier /var/lib/pgsql/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/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 super utilisateur
Créons un utilisateur avec des privilèges de super utilisateur que nous pouvons utiliser pour administrer postgres.
Connectez-vous à la base de données en tant que rôle postres
$ sudo -u postgres psql
psql (13.3)
Type "help" for help.
postgres=#
Créer un super utilisateur avec le nom root
:
CREATE ROLE root WITH LOGIN SUPERUSER CREATEDB CREATEROLE PASSWORD 'passwordhere';
Vérifiez l'utilisateur s'il a été créé et s'il a reçu les privilèges nécessaires :
postgres=# CREATE ROLE root WITH LOGIN SUPERUSER CREATEDB CREATEROLE PASSWORD 'MrBpR89Yskv3hofGLP';
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 | {}
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 Postgresql13 sur un serveur Ubuntu, à effectuer quelques configurations de base, puis à gérer les utilisateurs de base.