GNU/Linux >> Tutoriels Linux >  >> Cent OS

Comment installer et configurer Postgres 13 sur Centos 8

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 :

  1. Serveur basé sur Centos 8/Rocky Linux 8/RHEL 8
  2. Accès root au serveur ou utilisateur avec accès root
  3. Accès Internet depuis le serveur
  4. Connaissance de base du terminal Linux

Table des matières

  1. Assurez-vous que le serveur est à jour
  2. Installation et démarrage du serveur Postgres
  3. Méthodes d'authentification des rôles et des bases de données PostgreSQL
  4. Connexion à la base de données postgres
  5. Configuration de l'instance postgres 14 pour l'accès à distance
  6. 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 le pg_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 forme scram-sha-256 , md5 , et password (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 :

  1. 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.


Cent OS
  1. Comment installer et configurer Gitlab sur CentOS 8

  2. Comment installer et configurer Postgres 13 Ubuntu 20.04

  3. Comment installer et configurer Postgres 13 sur Centos 8

  4. Comment installer et configurer Postgres 14 Ubuntu 20.04

  5. Comment installer et configurer Postgres 14 sur Fedora 34

Comment installer et configurer le serveur VNC sur CentOS 7

Comment installer et configurer Zimbra Multi Server sur CentOS 7

Comment installer et configurer le serveur VNC dans CentOS 7 / RHEL 7

Comment installer et configurer Memcached sur CentOS 8

Comment installer et configurer le serveur DHCP sur Centos 8

Comment installer et configurer VNC Server sur CentOS/RHEL 8