Source : https://www.linuxtricks.fr/wiki/debian-10-installer-et-utiliser-postgresql

Table des matières

  1. Introduction
  2. Installation
  3. Paramétrer PostgreSQL
    1. Fichier de configuration
    2. Définir un mot de passe à l’administrateur
    3. Créer des utilisateurs
    4. Créer une base de données
  4. Utiliser postgresql
    1. Lister les bases de données
    2. Se connecter à une base de données
    3. Commandes SQL de base
    4. Quitter la console Postgres
    5. Supprimer une base de données
  5. Connexion à un hôte PostgreSQL distant

Introduction

Dans cet article, nous allons voir comment installer et utiliser PostgreSQL sur Linux Debian 10 !

Installation

Dans un premier temps, on s’assure que le système est à jour :

$ sudo apt update 
$ sudo apt full-upgrade

On installe ensuite le moteur de base de données :

$ sudo apt install postgresql postgresql-client

On peut aussi installer phppgadmin (Interface web de gestion de PostgreSQL) ou pgadmin3 (client lourd de gestion de PostgreSQL)
Par défaut, le nom d’utilisateur s’appelle postgres et la base de données par défaut postgres aussi.
Pour gérer le service, c’est avec systemd :

Si le service n’est pas démarré ni activé au démarrage, on l’active et on le démarre ainsi :

 $ sudo systemctl enable --now postgresql
Synchronizing state of postgresql.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable postgresql
$

Paramétrer PostgreSQL

Fichier de configuration

Le fichier principal de postgresql est /etc/postgresql/11/main/postgresql.conf
On peut modifier quelques paramètres :

$ sudo vi /etc/postgresql/11/main/postgresql.conf

Par exemple, pour se connecter en dehors de la machine locale (autoriser les connexions de toutes les IP) :

listen_addresses = '*' 

Le fichier gérant les connexions des clients est /etc/postgresql/11/main/pg_hba.conf
On peut modifier quelques paramètres :

vi /etc/postgresql/11/main/pg_hba.conf

Par exemple, autoriser les clients à se connecter depuis notre réseau local :

host    all             all             192.168.21.0/24            md5

Après chaque modification, il ne faut pas oublier de redémarrer postgresql :

$ sudo systemctl restart postgresql

Définir un mot de passe à l’administrateur

Toutes les modifications doivent se faire avec l’utilisateur postgres. L’administrateur postgres s’appelle … postgres
On se connecte (depuis root) à cet utilisateur :

$ su - postgres

Puis on définit un mot de passe depuis le client SQL « psql » :

$ psql -c "ALTER USER postgres WITH password 'monsupermotdepasse'"

Créer une base de données et des utilisateurs

Créons une base de donnée nommée « dupontsarl« , et un utilisateur « jules » dont le mot de passe sera « medor » :

postgres=# create database dupontsarl;
CREATE DATABASE
postgres=# create user jules with encrypted password 'medor';
CREATE ROLE
postgres=# grant all privileges on database dupontsarl to jules;
GRANT
postgres=#
postgres=# \c dupontsarl
You are now connected to database "dupontsarl" as user "postgres".
dupontsarl=# GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO jules;
GRANT
dupontsarl=#

Utiliser postgresql

Lister les bases de données

Pour lister les bases de données :

postgres@triton:~$ psql -l
                                  List of databases
    Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
------------+----------+----------+-------------+-------------+-----------------------
 dupontsarl | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =Tc/postgres         +
            |          |          |             |             | postgres=CTc/postgres+
            |          |          |             |             | jules=CTc/postgres
 postgres   | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 template0  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
            |          |          |             |             | postgres=CTc/postgres
 template1  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
            |          |          |             |             | postgres=CTc/postgres
(4 rows)

postgres$
 

Se connecter à une base de données

Pour se connecter à une base de données :

postgres@triton:~$ psql dupontsarl
psql (11.18 (Debian 11.18-0+deb10u1))
Type "help" for help.
dupontsarl=#

Une fois dans la session psql, on peut se connecter à une autre base de données avec la commande "\c" :
postgres=# \c durand
You are now connected to database "durand" as user "postgres".
dupontsarl=#

Commandes SQL de base

Après, on peut saisir n’importe quelle commande de type SQL :

dupontsarl=# ALTER USER utilisateurbdd WITH password 'supermdp';
ALTER ROLE

Créer une table

dupontsarl=# CREATE TABLE eleves ( id SERIAL PRIMARY KEY, nom CHAR(64), age INT);
CREATE TABLE
dupontsarl=#

Pour lister les tables existantes

dupontsarl=# \dt
List of relations
Schema | Name | Type | Owner
——–+——–+——-+———-
public | eleves | table | postgres
(1 row)

dupontsarl=#

Insérer des données dans une table

dupontsarl=# INSERT INTO eleves (nom, age) VALUES ('Charlotte',25);
INSERT 0 1
dupontsarl=#

Lister les données

dupontsarl=# SELECT * FROM eleves;
 id |                               nom                                | age
----+------------------------------------------------------------------+-----
  1 | Charlotte                                                        |  25
(1 row)

dupontsarl=#

Pour supprimer une table

dupontsarl=# DROP TABLE eleves;
DROP TABLE
dupontsarl=#

Quitter la console Postgres

Et pour quitter :

\q

Supprimer une base de données

Pour supprimer une base de données :

#= dropdb masuperbdd

Connexion à la base depuis PHP

Les commandes ci-dessous sont pour Linux Debian

Installer le paquet :

toto@triton:~$ sudo apt install php-pgsql
[sudo] password for toto:
...
Do you want to continue? [Y/n] y
...
Creating config file /etc/php/7.3/mods-available/pdo_pgsql.ini with new version
Setting up php-pgsql (2:7.3+69) ...
Processing triggers for libapache2-mod-php7.3 (7.3.31-1~deb10u1) ...
toto@triton:~$

Redémarrer apache

$ sudo systemctl restart apache2
$

Créons un script

<?php
$host = 'localhost';
$dbname = 'dupontsarl';
$username = 'jules';
$password = 'medor';

$conn = pg_connect("host=$host dbname=$dbname user=$username password=$password")
or die ("Could not connect to server\n");

$requete="SELECT id, nom, age
FROM eleves";

$result = pg_query($conn, $requete) or die("<br>Echec d'éxecution de la requête: $requete\n");

while ($row = pg_fetch_row($result)) {
echo "$row[0] $row[1] $row[2]\n";
}

pg_close($conn);

?>
 

Résultat

Connexion à un hôte PostgreSQL distant

Sources :

https://www.netiq.com/documentation/identity-manager-47/setup_windows/data/connecting-to-a-remote-postgresql-database.html

$ sudo vi /etc/postgresql/11/main/postgresql.conf

listen_addresses = '*'

Puis

$ sudo vi /etc/postgresql/11/main/pg_hba.conf

host all all 0.0.0.0/0 md5

$ sudo systemctl restart postgresql
$

Leave a Reply

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Blue Captcha Image
Refresh

*

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.