EDB Postgres – installation et mise en œuvre

Mise en œuvre d’EDB (Enterprise DataBase) Postgres version 12.x

Installation et Configuration d'EDB Postgres sur Linux RHEL/CentOS/OL

Cet article fournit un guide pour effectuer une installation du logiciel de gestion de base de données EDB Postgres dans l'environnement Linux RHEL/CentOS/OL (RedHat Enterprise Linux/Community enterprise Operating System/Oracle Linux) :

  • Introduction
  • Pré-requis
  • Installation du logiciel EDB Postgres Advanced Server
  • Configuration du package d’installation
  • Configuration de l'agent du service edb-pgagent-12

Introduction

EDB Postgres est une version consolidée du moteur de gestion de base de données PostgreSQL. C’est une plateforme de gestion de données de qualité professionnelle qui fournit une vraie compatibilité avec Oracle Database. L'installation des logiciels EDB sur Linux RHEL/CentOS/OL avec YUM et le gestionnaire de packages  RPM nécessite la configuration du référentiel YUM pour EDB.

Site : https://www.enterprisedb.com/fr/

Pré-requis

Pour pouvoir installer les logiciels EDB Postgres sur Linux RHEL/CentOS/OL vous devez avoir un compte utilisateur sur le site EnterpriseDB et le référentiel YUM doit être configuré pour EDB. Consultez l'article EDB Postgres – Enregistrement & Référentiel YUM pour effectuer ces opérations.

Installation du logiciel EDB Postgres Advanced Server

Le guide d’installation officiel est accessible à cette adresse : https://www.enterprisedb.com/edb-docs/d/edb-postgres-advanced-server/installation-getting-started/installation-guide-for-linux/12/toc.html

Installation de la version 12 de EDB Postgres

login as: root
root@serveur's password: xxxxx

# yum install edb-as12-server

Un compte utilisateur Linux enterprisedb et un groupe enterprisedb ont été créés

Tant que la base de données n’a pas été initialisée, le directory data du user enterprisebd est vide.

Les composants du logiciel ont été installés dans /usr/edb/as12

Configuration du package d’installation

Les packages qui installent le composant serveur de base de données créent un fichier de configuration de service (sur les Linux version 6.x) ou un fichier unitaire (sur les Linux version 7.x) et des scripts de démarrage du service.

Création d'un cluster de bases de données et démarrage du service

La commande PostgreSQL initdb permet de créer le cluster de base de données ; lors de l'installation d'Advanced Server avec le package RPM, l'exécutable initdb a été installé dans /usr/edb/as12/bin. Vous devez configurer manuellement le service pour créer votre cluster en appelant initdb depuis le super user root.

Sur Linux 6.x

# service edb-as-12 initdb

Sur Linux 7.x

# export PGSETUP_INITDB_OPTIONS="-E UTF-8"
# /usr/edb/as12/bin/edb-as-12-setup initdb

La base a été configurée :

Démarrage du serveur de base de données

Après avoir créé le cluster :

Sous Linux 6 utilisez la commande service pour démarrer, arrêter ou vérifier l’état du service :

# service edb-as-12 start

Vous pouvez vérifier également l’état du service depuis le directory /etc/init.d :

# cd /etc/init.d
# ./edb-as-12 status

Pour activer le service de manière permanente utilisez la commande chkconfig :

# chkconfig --add edb-as-12

Sous Linux 7 utilisez systemctl pour démarrer, arrêter ou redémarrer le service :

# systemctl { start | stop | restart } edb-as-12

Vous pouvez activer les services EDB afin qu’ils démarrent automatiquement au lancement du système :

[root@ol77 ~]# systemctl list-unit-files --type service | grep edb
edb-as-12.service                             disabled
edb-pgagent-12.service                        disabled
# systemctl enable edb-as-12.service

Connexion à la base de données

Connexion depuis le user enterprisedb.

Enterprisedb est le « super-user » qui a été pré défini à l’installation d’une part au niveau du système d’exploitation, d’autre part dans la base de données edb qui est la base de données également définie par défaut. L’accès à la base de données sans avoir à entrer un mot de passe peut être effectué via le user enterprisedb :

# su - enterprisedb
$ edb-psql -d edb -U enterprisedb
edb-psql (12.2.3)
Saisissez « help » pour l'aide.

Connexion par défaut depuis le user système enterprisedb

# su - enterprisedb
$ pwd
/var/lib/edb
$ cd as12/data/

Les méthodes de connexion sont définies dans le fichier pg_hba.conf.

Remarque : A chaque modification de ce fichier le serveur de base de données doit être relancé.

La méthode peer autorise la connexion à la base de données sans mot de passe mais uniquement depuis le user système enterprisedb

$ vi pg_hba.conf
...
# TYPE  DATABASE        USER            ADDRESS                 METHOD
# "local" is for Unix domain socket connections only
local   all             all                                     peer
...

Connexion à la base de données edb en mode ligne de commandes avec l'utilitaire edb-psql (ou psql)

$ edb-psql -d edb -U enterprisedb
edb-psql (12.2.3)
Saisissez « help » pour l'aide.
edb=#

Entrez quelques commandes EDB

Version du logiciel

edb=# select version();
version
-------------------------------------------------------------------------------------------------------------
PostgreSQL 12.2 (EnterpriseDB Advanced Server 12.2.3) on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 201
50623 (Red Hat 4.8.5-36), 64-bit
(1 ligne)

Liste des bases de données

edb=# \l

Liste des schémas

edb=# \dnS

Configuration des connexions

La connexion par défaut sans mot de passe ne fonctionne que depuis le user Linux enterprisedb. Afin de pouvoir se connecter à la base de données depuis n'importe quel utilisateur du système il est nécessaire de modifier la méthode de connexion locale dans le fichier pg_hba.conf. Le fichier se situe dans le directory ~/as12/data du user enterprisedb de la base de données :

# su - enterprisedb
$ pwd
/var/lib/edb
$ cd as12/data/

Remplacer la méthode peer par md5

$ vi pg_hba.conf
...
# "local" is for Unix domain socket connections only
# local   all             all                                     peer
# avec md5 la connexion depuis un autre user que enterprisedb fonctionne avec l'option -W
local   all             all                                     md5
...

Modifier le mot de passe de enterprisedb

# su - enterprisedb
$ edb-psql -d edb -U enterprisedb
edb=#  ALTER USER enterprisedb WITH PASSWORD 'secret';
ALTER ROLE

edb=# \q
$ exit

Relancer le serveur de base de données

Linux 6

# service edb-as-12 restart

Linux 7

# systemctl restart edb-as-12.service

Connexion depuis le user système root

# edb-psql -d edb -U enterprisedb -W
Mot de passe : xxxxx
edb-psql (12.2.3)
Saisissez « help » pour l'aide.
edb=# \q

Connexion depuis le user système enterprisedb

# su - enterprisedb
$ edb-psql -d edb -U enterprisedb
Mot de passe pour l'utilisateur enterprisedb : xxxxx
psql (12.2.3)
Saisissez « help » pour l'aide.
edb=# \q
-bash-4.2$

Configuration du fichier pg_hba.conf

Dans le fichier pg_hba.conf, les méthodes de connexion ont été configurées en md5 afin de pouvoir se connecter avec le mot de passe du user qui est défini dans la base de données

# su - enterprisedb
$ pwd
/var/lib/edb
$ cd as12/data/
$ vi pg_hba.conf
# TYPE  DATABASE        USER            ADDRESS                 METHOD
# "local" is for Unix domain socket connections only
# local   all             all                                     peer
# avec md5 la connexion depuis un autre user que enterprisedb fonctionne avec l'option -W

local   all             all                                     md5

# IPv4 local connections:
# host    all             all             127.0.0.1/0    ident map=edbas
host    all             all             127.0.0.1/0             md5
host    all             all             10.0.2.15/0             md5

Remarque : Le fichier pg_ident.conf permet d'indiquer les correspondances pour les méthodes de type ident

$ vi pg_ident.conf
# MAPNAME       SYSTEM-USERNAME  PG-USERNAME
edbas           enterprisedb     enterprisedb                                <-- pas utilisé

 

Configuration de l'agent du service edb-pgagent-12

Liste des services relatifs à EDB

Linux 6

# service --status-all | grep edb

Linux 7

# systemctl list-unit-files --type service | grep edb

Lancement du service edb-pgagent-12

# systemctl start edb-pgagent-12.service

Vérification du status au bout de 10 secondes :

# systemctl status edb-pgagent-12.service

Consultation du fichier log

# tail  /var/log/edb/pgagent12/pgagent.log
WARNING: Couldn't create the primary connection [Attempt #1]

L'agent semble ne pas être configuré dans la base de données. Le schéma pgagent doit exister et contenir les tables utilisées par l’agent.

Création du schéma pgagent et des tables de l'agent.

Le script pgagent.sql qui permet de créer ces objets dans la base de données se situe dans le directory : /usr/share/edb/pgagent12

# su – enterprisedb

$ cd /usr/share/edb/pgagent12

Exécution du script pgagent.sql

$ edb-psql -d edb -U enterprisedb -W
Mot de passe : xxxxx
edb-psql (12.2.3)
Saisissez « help » pour l'aide.
edb=# \i pgagent.sql

Vérification de l’existence du schéma pgagent

edb=# \dnS
         Liste des schémas
        Nom         | Propriétaire
--------------------+--------------
 information_schema | enterprisedb
 pg_catalog         | enterprisedb
 pg_temp_1          | enterprisedb
 pg_toast           | enterprisedb
 pg_toast_temp_1    | enterprisedb
 pgagent            | enterprisedb   <---
 public             | enterprisedb
 sys                | enterprisedb
(8 lignes)

edb=# \q

$

Création du fichier de mot de passe du user enterprisedb ~/.pgpass

Le fichier .pgpass doit être créé dans le HOME directory du user linux enterprisedb. Ce fichier contiendra le mot de passe de connexion au super user de la base enterprisedb. Sur Unix/Linux les permissions doivent être définies à 0600 pour le fichier soit pris en compte. Le format du fichier est le suivant :

format: hostname:port:database:username:password
# su – enterprisedb
$ vi  ~/.pgpass
127.0.0.1:5444:edb:enterprisedb:secret
$ chmod 0600 ~/.pgpass

$ exit
#

Remarque : le numéro de port de enterprise EDB est 5444

Relancer l'agent

Linux 6.x

# cd /etc/init.d
# ./edb-pgagent-12 start
Starting edb-pgagent-12                                    [  OK  ]

# ./edb-pgagent-12 status

Linux 7.x

# systemctl start edb-pgagent-12.service
# systemctl status edb-pgagent-12.service