Rares sont les applications web qui n’ont pas besoin de stocker des données dans une base de données. Bien que ce soit PostgreSQL qui ait le vent en poupe, je préfère personnellement utiliser MySQL, ou sa version communautaire MariaDB (MySQL ayant été acheté par Oracle). Elle s’installe et se configure facilement sous Linux, et surtout elle est facile à interférer avec depuis un programme en langage C.
Installation de MySQL sous Ubuntu
sudo apt update
sudo apt install mysql-server mysql-client libmysqlclient-dev
mysql-server est un paquet générique qui installe la dernière version en vigueur du serveur de base de données
mysql-client est un paquet qui installe la commande mysql, qui permet de se connecter au SGBD à la main
libmysqlclient-dev installe un paquet qui fournit ce qu’il faut pour se connecter à MySQL depuis un programme en C
Configuration initiale de MySQL (à faire une seule fois)
Une fois les paquets installés, on lance la sécurisation de MySQL par :
sudo mysql_secure_installation
Ce programme va poser des questions auxquelles il faut répondre. Il faudra notamment donner le mot de passe MySQL de root qu’on choisit, confirmer la suppression des utilisateurs anonymes et des bases de test, et désactiver la connexion à distance de root.
Ensuite on va permettre à root de se connecter facilement. Pour faire ce paramétrage, on tape dans le shell la commande :
sudo mysql
On arrive dans le shell de mysql, dans lequel on tape (remplacer le mot de passe par celui que vous avez choisi pour root) :
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'VotreMotDePasseDeRoot';
FLUSH PRIVILEGES;
EXIT;
Désormais MySQL est configuré et root peut s’y connecter en tapant la commande :
mysql -u root -p mysql
Cette commande se lit : lancer l’utilitaire mysql (qui est le client MySQL) en utilisant l’utilisateur (-u) root, en demandant le mot de passe (-p) et si l’identification est ok, le connecter à la base mysql (qui est mentionnée derrière -p).
Créer une base de données et un utilisateur pour une future application en C
Maintenant que MySQL est opérationnel, on peut y créer autant de base de données, et d’utilisateurs propriétaires de ces bases de données, que l’on veut.
Chaque application web aura sa base de données (utilisable en lecture et écriture depuis ses scripts en C, on verra par la suite comment faire), et son utilisateur propriétaire de cette base de données.
Imaginons que notre application s’appelle tartemuche. On va donc créer une base de données tartemuche, un utilisateur local (uniquement, il ne pourra pas se connecter à distance par sécurité. Les scripts en C devront donc tourner sur le même serveur que celui qui héberge MySQL) tartemuche qui aura tous les droits sur la base de données tartemuche et qui aura comme mot de passe de connexion à cette base de données tartemolle.
Voyons comment préparer cela. Tout d’abord on se connecte en tant que root à la base de données mysql :
mysql -u root -p mysql
C’est dans cette base de données mysql que root va déclarer la base de données tartemuche et l’utilisateur tartemuche. Pour créer la base tartemuche, root y tape :
CREATE DATABASE tartemuche;
Puis pour créer l’utilisateur tartemuche il y tape :
CREATE USER 'tartemuche'@'localhost' IDENTIFIED BY 'tartemolle';
Et pour donner à cet utilisateur tous les droits sur la base de données tartemuche, root y tape :
GRANT ALL PRIVILEGES ON tartemuche.* TO 'tartemuche'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Désormais, la base de données tartemuche est créée, l’utilisateur tartemuche est créé (et ne peut se connecter qu’en local), et l’utilisateur tartemuche a tous les droits (création, consultation, destruction) sur la base de données tartemuche.
Cet utilisateur peut se connecter à sa base en tapant dans le shell :
mysql -u tartemuche -p tartemuche
Il devra fournir le mot de passe tartemolle pour accéder au shell de sa base de données, dans lequel il pourra taper les commandes SQL qu’il veut.
Utilisation ultérieure de la base de données depuis un script en langage C
Maintenant que la base et l’utilisateur ayant les droits sur cette base sont créés, la base tartemuche est tout à fait utilisable pour notre future application tartemuche écrite en C.
Nous verrons dans un épisode suivant comment se connecter à cette base depuis un programme en C, mais vous avez déjà deviné qu’il faudra impérativement fournir au programme en C le nom de la base de données (tartemuche ici), le nom de l’utilisateur ayant accès à cette base de données (tartemuche ici) et le mot de passe de l’utilisateur (tartemolle ici).
La configuration de MySQL et d’une base que nous avons faite ici est très basique (mais suffisante pour notre besoin) par rapport à tout ce qu’il y aurait à savoir sur MySQL.
Le lecteur curieux pourra se référer à un ouvrage de référence pour aller plus loin :
Point important à noter : une base de données SQL comme MySQL (ou PostgreSQL) se pilote avec des commandes … SQL. Donc on n’y coupe pas, pour être programmeur backend il faut maîtriser un minimum le langage SQL.


