Mes ressources pour le Web

Installer PostgreSQL + PHP 8.0.x


Après avoir installer PHP 8.0.x + MariaDB avec Debian 10 je vais installer PostreSql afin de pourvoir tester GestAssoPhp avec une base de données postgresql

Dans cette page (installation en local)  linux est le nom du dossier personnel : celui qui se créer avec le nom d’utilisateur à l'installation, dans le home, donc ici  /home/linux/ dans cette page. Il faut donc adapter le nom suivant votre dossier personnel. De plus les mots de passe et nom d’utilisateur sont fictif.
Uniquement pour tests et information "à vos risques et périls" ;-)
Nota suivant la distribution Linux le logiciel éditeur de texte mousepad peut être remplacer gedit, geany par ou autre possibilité à votre convenance pour l’édition des fichiers textes

Les manipulations sont faites en ligne de commande en terminal administrateur
sudo -s
(plus simple à reproduire ici)
#mettre à jour éventuellement
apt-get update
apt-get upgrade

# Puis installer
apt-get install postgresql 
Les paquets supplémentaires suivants seront installés :
postgresql-11 postgresql-client-11 postgresql-client-common
postgresql-common sysstat
Paquets suggérés :
postgresql-doc postgresql-doc-11 libjson-perl isag
Les NOUVEAUX paquets suivants seront installés :
postgresql postgresql-11 postgresql-client-11 postgresql-client-common
postgresql-common sysstat
Installation terminée de postgresql (11+200+deb10u4)

En complément pour utiliser postgresql avec PHP 8.0.x il faut installer php8.0-pgsql
apt-get install php8.0-pgsql 
Les NOUVEAUX paquets suivants seront installés :
php8.0-pgsql


Puis une fois l'installation terminée
(pour relancer le serveur)
systemctl reload apache2

Contrôle avec le phpinfo.php http://localhost/phpinfo.php
l'information donnée
PDO Driver for PostgreSQL     enabled
PostgreSQL(libpq) Version     11.9
php8_phpinfo_psql_r

Lors de l’installation, l’utilisateur « postgres » est créé automatiquement. Par défaut, le mot de passe de cet utilisateur n’est pas connu.

# Création du mot de passe
passwd postgres
Entrez le nouveau mot de passe UNIX : ici linux
Retapez le nouveau mot de passe UNIX : ici linux
passwd: password updated successfully

Pour travailler il faut commencer par se connecter ( nota étant toujours en terminal administrateur)
root@debian:/home/linux# su postgres
# Il n'y a pas à entrer le mot de passe
!! Si on était en terminal utilisateur il faudrait entrer le mot de passe ici linux
#postgres@debian:/home/linux$ psql
psql (11.9 (Debian 11.9-0+deb10u1))
Saisissez « help » pour l'aide.
postgres=# help
Vous utilisez psql, l'interface en ligne de commande de PostgreSQL.
Saisissez:
\copyright pour les termes de distribution
\h pour l'aide-mémoire des commandes SQL
\? pour l'aide-mémoire des commandes psql
\g ou point-virgule en fin d'instruction pour exécuter la requête
\q pour quitter

Il faut pour continuer les opérations de création d’utilisateur, de mot de passe et de base et de données. comme je suis en local la sécurité du mot de passe ne sera en mode sécurisée par chiffrage.
Pour cela il faut éditer le fichier /etc/postgresql/11/main/pg_hba.conf
mousepad  /etc/postgresql/11/main/pg_hba.conf
et remplacer peer par password et aussi  md5 par password
 # Database administrative login by Unix domain socket
local   all             postgres                                peer
# TYPE  DATABASE        USER            ADDRESS                 METHOD
# "local" is for Unix domain socket connections only
local   all             all                                     peer -> password
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5  -> password
# IPv6 local connections:
host    all             all             ::1/128                 md5  -> password
# Allow replication connections from localhost, by a user with the
# replication privilege

Afin de tester le système GestAssoPhp
je vais créer un nouvel utilisateur test et un mot de passe pwuser
su postgres
# si terminal utilisateur entrer le mot de passe
Mot de passe : ici linux
createuser test

#Par défaut le nouvel utilisateur n’a pas de mot de passe, il faut donc le créer
psql -d template1 -c "alter user test with password 'pwuser'"

# Il y a donc maintenant un utilisateur test avec un mot de pass pwuser
#Création d’une base de données
La commande suivante, permet de créer la base de données gestapg pour l’utilisateur test en utilisant l’encodage UNICODE :
createdb -O test -E UNICODE gestapg
 
# On test
psql -l -U test
                                  Liste des bases de données
    Nom    | Propriétaire | Encodage | Collationnement | Type caract. | 
-----------+--------------+----------+-----------------+--------------+-
 gestapg   | test         | UTF8     | fr_FR.UTF-8     | fr_FR.UTF-8  |
 postgres  | postgres     | UTF8     | fr_FR.UTF-8     | fr_FR.UTF-8  |
 template0 | postgres     | UTF8     | fr_FR.UTF-8     | fr_FR.UTF-8  |
 template1 | postgres     | UTF8     | fr_FR.UTF-8     | fr_FR.UTF-8  |
(4 lignes)


Il est possible d'installer pgadmin3 pour visualiser et se se connecter à la base de données.
Mais le plus simple est d'utiliser adminer qui fonctionne avec MariaDB et PostgreSQL, donc un seul logiciel pour gérer ces bases de données.
php8_adminer_gesta_psql_r

Il ne reste plus qu'a tester l'installation et le fonctionnement de GestAssoPhp


Crédit pour les affichages en ligne de commande : Syntax highlighting for the Web

Erreurs, omissions, corrections merci de me le signaler

Original le 15/11/2020
Document http://jc.etiemble.free.fr/abc/ JCE - version du 16/11/2020-0 CC_licence