Blog ENI : Toute la veille numérique !
🐠 -25€ dès 75€ 
+ 7 jours d'accès à la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. Installation et configuration d'un serveur internet
  3. Bases de données
Extrait - Installation et configuration d'un serveur internet (BIND, Apache, Nginx, Dovecot, Postfix...)
Extraits du livre
Installation et configuration d'un serveur internet (BIND, Apache, Nginx, Dovecot, Postfix...)
2 avis
Revenir à la page d'achat du livre

Bases de données

Introduction

Depuis des siècles, l’homme a développé des systèmes qui aident à stocker et à récupérer des données. Il n’est donc pas surprenant que le développement de l’ordinateur et celui de la base de données aillent de pair, et que les bases de données soient une partie inséparable de pratiquement tout système automatisé.

Voici quelques exemples de l’utilisation des bases de données sur un serveur internet :

  • les utilisateurs et les mots de passe

  • le lien entre les adresses courriel et les utilisateurs

  • les listes des logiciels disponibles et des logiciels installés

  • le contenu des sites web et des applications web

  • les dictionnaires de définitions de virus, pour l’antivirus

Une base de données est une collection de données, stockée structurée. Pour récupérer et modifier ces données - ce qui est parfois abrégé CRUD (en anglais : Create, Read, Update, Delete, créer, lire, modifier, supprimer) - un système de gestion de base de données, ou simplement SGBD, est employé ; ce système est également connu sous son nom anglais Database Management System, ou simplement DBMS.

La majorité des bases de données sont dites relationnelles ; il est possible de communiquer avec presque tous les systèmes...

bd.example.com

Des interfaces web seront installées pour faciliter la gestion de MariaDB, PostgreSQL et LDAP ; ces interfaces s’appellent respectivement phpMyAdmin, phpPgAdmin et phpLDAPadmin. Pour ne pas trop compliquer la configuration, celles-ci seront toutes servies sous l’hôte virtuel bd.example.com.

Pour monter cet hôte ou ce serveur virtuel, voici les étapes à suivre :

1. Enregistrement DNS

Le nom d’hôte bd.example.com doit être un alias de vert.example.com.

Bd    IN    CNAME    vert 

(Augmenter le numéro de série !)

2. Certificat SSL/TLS

La commande suivante sert à l’installation du certificat :

# certbot certonly --webroot -w /srv/www/rfc5785 \ 
    -d bd.example.com 

3. Utilisateur

L’utilisateur www-bd doit être créé pour l’exécution des scripts PHP. Cet utilisateur a comme groupe primaire un groupe portant le même nom que le nom d’utilisateur et n’appartient à aucun autre groupe. Le répertoire personnel de cet utilisateur s’appelle /srv/www/bd.example.com (mais il n’est pas encore nécessaire de créer ce répertoire), et l’utilisateur n’a pas de shell par défaut.

4. Répertoires

Le répertoire /srv/www/bd.example.com hébergera l’hôte virtuel.

# mkdir /srv/www/bd.example.com 
# cd /srv/www/bd.example.com ...

MariaDB (MySQL)

Les noms MySQL et MariaDB sont souvent utilisés de manière interchangeable, même s’ils ne désignent pas exactement le même produit. Le produit d’origine est MySQL, un SGBD open source, développé par l’entreprise MySQL AB ; cette entreprise a été vendue à Sun Microsystems en 2008. Lorsque Sun, à son tour, a été racheté par Oracle Corporation en 2010, le propriétaire initial de MySQL AB a perdu confiance dans la direction prise par MySQL, et il a copié son code open source pour baser dessus un nouveau projet open source - une telle copie s’appelle un fork (fourche). Ce nouveau projet est MariaDB ; il est donc basé en grande partie sur le code source de MySQL et il est géré par le développeur original de MySQL. L’entreprise derrière le développement de MariaDB s’appelle Monty Program AB.

Ce dernier paragraphe n’est pas tout à fait une information qu’un administrateur système devrait connaître par cœur, mais comme les termes my et mysql apparaissent fréquemment dans le code source de MariaDB, y compris dans des noms de fichiers, il est pratique de savoir que ces deux produits partagent leur origine.

Un grand nombre de projets open source, dont des distributions Linux, partageaient les préoccupations concernant la version Oracle de MySQL et ont remplacé MySQL par MariaDB comme SGBD par défaut. Oracle publie plusieurs variantes commerciales de MySQL, mais le MySQL Community Server est toujours publié sous licence open source et la majorité des systèmes Unix le propose toujours comme une solution alternative à MariaDB.

Lorsqu’un de ces deux SGBD est utilisé, il peut, dans pratiquement tous les cas, être remplacé par l’autre sans aucun problème. Comme, par exemple, les fichiers exécutables mysql et mysql-client ont les mêmes noms dans les deux projets, il est plus compliqué de faire tourner les deux sur le même système.

Pendant l’installation, un utilisateur et un groupe nommés mysql sont créés. Le daemon sera exécuté sous ce nom.

Pour rendre accessible MariaDB/MySQL depuis internet, le port TCP 3306 doit être ouvert dans le pare-feu pour...

PostgreSQL

PostgreSQL, ou simplement Postgres, descend d’Ingres, dont le développement a commencé dans les années 70 ; Postgres est donc 20-25 ans plus mature que MariaDB. Contrairement à MariaDB, le projet PostgreSQL n’est pas géré par une entreprise, mais par une communauté de particuliers et d’entreprises. La licence de PostgreSQL est moins restrictive que la Licence publique générale GNU utilisée par MariaDB.

PostgreSQL a été porté sur plus de systèmes d’exploitation que MariaDB. En revanche, il existe plus de langages de programmation qui ont du support intégré pour MariaDB que pour PostgreSQL.

Pendant l’installation, un utilisateur et un groupe nommés postgres sont créés. Le daemon sera exécuté sous ces noms.

Pour rendre accessible PostgreSQL depuis internet, le port TCP 5432 doit être ouvert dans le pare-feu pour le trafic entrant. Par contre, c’est inutile pour les sites web hébergés sur le serveur même (y compris phpPgAdmin). Pour une question de sécurité, il est donc déconseillé d’ouvrir ce port, sauf s’il existe des raisons importantes pour le faire malgré tout.

1. Installation sous FreeBSD

Au moment de l’écriture de ce livre, la version la plus récente est PostgreSQL 12. En revanche, la version la plus récente prise en charge par l’interface web, qui sera installée dans la section phpPgAdmin, est PostgreSQL 11. La facilité de gestion de cette version est plus intéressante que les nouveautés apportées par la version 12.

À l’inverse, le paquet contenant le client n’installe pas le serveur comme dépendance. 

freebsd# pkg install postgresql11-server 

Par défaut, les bases de données sont installées dans le répertoire /var/db/postgres, le répertoire personnel de l’utilisateur postgres. Si un autre répertoire a été réservé à cette fin, celui de l’utilisateur postgres doit être modifié ; vous trouverez les instructions pour effectuer cette modification dans le chapitre Gestion des utilisateurs et des droits.

Après l’installation, le daemon...

Lightweight Directory Access Protocol (LDAP)

Le LDAP n’est pas une base de données, il n’est pas un système de gestion de bases de données non plus. Le LDAP est un protocole réseau employé pour la communication avec un annuaire ; un annuaire est comparable à un SGBD utilisé pour accéder à des données structurées hiérarchiquement. Par contre, le terme annuaire est aussi souvent employé pour désigner la base de données sous-jacente, et le terme LDAP est aussi souvent employé pour désigner l’annuaire et la base de données sous-jacente ; même s’il est bien de connaître cette terminologie, il est également bien de savoir qu’elle est, en fait, fausse.

Les unités stockées dans la base de données sont appelées des objets ou des entrées. Une entrée contient un ou plusieurs attributs, un attribut a une ou plusieurs valeurs. Une entrée nommée Personne, par exemple, peut contenir les attributs Nom, Prénom, Courriel et Téléphone. Chaque entrée contient un attribut Distinguished Name (nom unique) ou simplement DN, qui permet d’identifier l’entrée de façon unique dans la base de données.

Les données contenues dans la base de données peuvent être exprimées comme du texte clair, pour leur transfert ou pour les modifier dans la base de données. Ce format texte s’appelle LDIF (en anglais : LDAP Data Interchange Format, format d’échange de données LDAP). Un fichier LDIF peut contenir une ou plusieurs entrées, séparées par des lignes blanches ; une entrée se compose d’un ou plusieurs attributs, un seul attribut par ligne, sans ligne blanche. Les valeurs qui ne s’expriment pas en caractères de la norme ASCII peuvent être codées à l’aide de base64.

L’installation décrite dans ce livre a pour but premier la gestion des utilisateurs de la messagerie. D’autres applications sont envisageables.

L’installation créera un utilisateur et un groupe nommés ldap (FreeBSD et CentOS) ou openldap (Debian). Le daemon sera exécuté sous ce nom.

L’application web phpLDAPadmin sera également...

Autres bases de données

Deux autres bases de données fréquemment utilisées sont DBM et SQLite. Ces bases de données ne fonctionnent pas dans un environnement client-serveur, mais créent au lieu de cela un seul fichier contenant la base de données en entier qui peut être intégré dans une application et qui peut être ouvert et modifié à l’aide d’une bibliothèque logicielle.

L’avantage d’un tel environnement est l’absence d’un daemon à lancer. L’inconvénient pourrait être l’impossibilité de modification de la base de données par plusieurs processus en même temps. Ces bases de données sont donc plutôt appropriées pour les situations où peu de nouvelles données y sont stockées, ou pour les environnements où un seul processus modifie les données, et un ou plusieurs processus recherchent des données.

1. DBM

Une DBM est une base de données très simple, constituée d’une seule table. Les fichiers DBM sont générés depuis des fichiers textes contenant deux colonnes. La colonne de gauche contient les valeurs sur lesquelles une recherche est lancée (les clés), et la colonne de droite contient les valeurs qui sont retournées comme le résultat des recherches....