8 Doc Docker/Postgres
Audric SABATIER edited this page 2 years ago
This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

Mise en place d'un serveur PostgreSql

Conteneur docker :

Nous allons mettre notre instance Postgres dans un conteneur Docker.

Pour ce faire il faut récupérer une image PostgreSql qui est un template de conteneur avec les fichiers de configuration et certains paquets déja pré-installé.

docker run --name NomDuContainer -p Host_Port:Container_Port -e POSTGRES_PASSWORD=Mdp_Postgres -d postgres
  • -p : Relie (mapping) le port du conteneur sur un port de la machine hôte. Pour plus de practicité, Host_Port = Container_Port
  • -e : Crée une variable d'environnemment
  • -d : Démarre le container en mode background

Verification du lancement du container :

docker ps -a

Connexion locale :

psql -h 127.0.0.1 -p Container_Port -U postgres

Connexion distante :

Connexion dans un même réseau :

Il faut autoriser toutes les connections, pour cela, il faut modifier les adresse d'écoute dans le ficheir de configuration du serveur.

Fichier : /var/lib/postgresql/data/postgresql.conf

Modifier la ligne suivante :

listen_addresses = 'localhost'

listen_adresses = '*'

Maintenant, n'importe quelle machine du même réseau ayant l'adresse ip de la machine hôte ainsi que le port peut se connecter au serveur.

On peut tester :

psql -h Ip_Machine_Hôte_Privée -p Container_Port -U postgres

Connexion dans des réseaux distincts :

Pour laisser l'accès depuis l'exterieur (Internet), il faut établir une règle PAT du firewall du routeur (box). Pour cela, il faut rediriger ce qui arrive sur le port Host_Port du routeur vers le port Host_Port de la machine hebergeant docker ayant pour IP Ip_Machine_Hôte.

Ainsi les utilisateurs peuvent se connecter à distance en utilisant :

psql -h Ip_Routeur_Publique -p Container_Port -U postgres

Administration de la base :

A venir ...

Protection mot de passe :

Le hachage va retourner une « empreinte » des données fournies en entrée alors que la fonction de cryptage va retournée un texte différent de celui fourni en entrée, texte qui pourra être reconstitué par celui qui possède la clé de cryptage. Un cryptage peut donc permettre de retrouver le texte original alors qu'un hachage, ne permet pas de reconstituer le texte dorigine. Les deux fonctions ont leur utilité mais le but de leur utilisation est totalement différent.

Il faut savoir quand même que certaines fonctions de hachage retournent la même empreinte pour des données différentes, c'est ce qu'on appelle la collision. C'est le cas pour le MD5 et ces fonctions ne doivent pas être utilisées pour hacher des mots de passe. Le meilleur algorithme pour éviter les collisions est le SHA-512 selon Google.

Il n'existe pas de fonction qui à partir du texte haché, retourne le texte original. Une fois haché, il est impossible de créer une fonction permettant de récupérer le texte original. Si on parle d'empreinte, c'est parce qu'on peut comparer le résultat du hachage à l'empreinte d'un être humain.

CREATE ROLE utilisateur NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT LOGIN;

https://www.postgresql.org/docs/current/app-initdb.html