Administration d'une base de données SQL via Phpmyadmin

Phpmyadmin est un outil parfait pour administrer une base MySQL, donc une base MariaDB. Il permet de gérer les utilisateurs, leurs mots de passe, les bases de données, leurs tables, leurs index, etc... En fait, phpmyadmin se présente sous la forme d'un site WEB installé sur votre Raspberry pi. Un site WEB très cool développé en language PHP. Nous avons installé un serveur WEB, lui avons donné la possibilité de publier des pages en PHP, et avons installé une base de données MariaDB. Nous avons donc tout ce qui est nécessaire pour administrer cette base via phpmyadmin

Installation

Ouvrez un terminal et utilisez la commande "apt-get" ;


sudo apt-get install phpmyadmin -y


Durant cette installation, vous verrez plusieurs écrans se succéder. Le premier est le suivant :



C'est bien Apache2, appuyez directement sur la touche "Entrée" :



Ici aussi appuyez directement sur la touche "Entrée" :



Nous reviendrons plus loin sur les comptes d'utilisateurs mais, Phpmyadmin est aussi un utilisateur de la base de données SQL. Il doit donc avoir un mot de passe. Il faut lui donner un mot de passe (Notez le dans un coin...). Saisissez ce mot de passe puis validez par "Entrée" :



A la fin de ce programme d'installation, il nous faut encore exécuter quelques commandes depuis le terminal. La première, commande "ln" permet de créer un lien symbolique entre le répertoire ou est installé le site WEB phpmyadmin et celui ou le serveur WEB Apache vient chercher ses sites WEB publiables. Cela permet de ne pas polluer votre répertoire "/var/www/html" par phpmyadmin. Et aussi de protéger les fichiers de phpmyadmin. La commande à exécuter est donc :


sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin


La deuxième commande permet de mettre en service dans PHP, l'interface API (Application Program Interface), en français une interface de programmation, de MySQL (donc de MariaDB). Cette interface se nomme "mysqli". La commande à exécuter est donc :


sudo phpenmod mysqli


Nous pouvons en profiter pour installer les librairies qui nous permettrons d'accèder à la base de données depuis C++ ou Python. Voici les commandes "apt-get" à exécuter :


sudo apt-get install libmariadb-dev
sudo apt-get install libmariadb-dev-compat


Enfin, suite à ces modifications, il nous faut redémarrer Apache pour qu'il prenne en charge ces derniers :


sudo service apache2 restart

Gestion des premiers utilisateurs de la base de données

Avant de gérer les premiers utilisateurs de la base de données, il est bon de se rappeler d'une chose qui peut troubler les nouveaux venus.


Si lors de la mise en service du Raspberry Pi, vous avez défini que vous étiez l'utilisateur nommé "pi"", vu par Linux, vous êtes l'utilisateur "pi@raspberrypi". Vu par la base de données vous êtes "'root'@'localhost'". Vous devez faire la différence entre les comptes linux et ceux de la base de données. Vous pouvez créer des utilisateurs Linux qui ne pourront pas accéder à la base de données, et inversement. le terme "'localhost'" dans la dénomination des noms d'utilisateurs indique simplement que le compte de l'utilisateur de la base de données réside sur la machine ou fonctionne le serveur de base de données.


A ce stade la base de données a deux utilisateurs :


 - 'root'@'localhost' : C’est l’utilisateur principal. Celui qui a tous les droits. Il n’a pas de mot de passe. Ce qui est dangereux.
 - 'phpmyadmin’'@'localhost' : C’est aussi un utilisateur avec tous les pouvoirs. Son mot de passe est celui défini lors de l’installation de phpmyadmin.


Il nous faut tout d'abord attribuer un mot de passe à l'utlisateur "'root'". Pour cela, nous allons utiliser la console SQL. Dans un terminal, exécutez la commande suivante :


sudo mysql -u root -p


Lors de la demande du mot de passe, appuyez sur "Entrée" directement car pour le moment l'utilisateur "'root'" n'a pas de mot de passe. Dans la console SQL, exécutez la commande suivante en remplaçant "'mot de passe'" par celui que vous souhaitez donner à l'utilisateur "'root'". Attention à la syntaxe : N'oubliez pas que les paramètres passés à la commande doivent être entourés de caractères "'" et que toute commande SQL doit se terminer par le caractère ";":


ALTER USER 'root'@'localhost' IDENTIFIED BY 'mot de passe';


Nos deux utlisateurs avec pouvoirs sont désormais protégés par un mot de passe. Tout va bien. Moi, pour des raisons de santé mentale, j'aime bien avoir le même nom d'utilisateur. Ca me simplifie la vie. Alors je crée un nouveau compte d'administrateur auquel je donne le même nom d'utilisateur que celui de Linux, à savoir : pi. Donc j'exécute dans la console SQL les commandes suivantes :


CREATE USER 'pi'@'localhost' IDENTIFIED BY '???????';
grant all privileges on *.* to pi@localhost;
grant grant option on *.* to pi@localhost;
FLUSH PRIVILEGES;


On peut désormais quitter la console SQL :


Exit;


Tout ce qui est nécessaire est installé. Il faut maintenant vérifier le bon fonctionnement. Nous allons en profiter pour créer un utlisateur de la base de données qui pourra lire la base mais ne pourra ni la modifier, ni l'administrer. Un simple client.

Vérification

En utilisant le navigateur Internet de votre PC relié à votre Raspberry pi. Entrez l'adresse IP de votre Raspberry Pi (Telle que vous l'avez défini à la rubrique Configuration du réseau) suivi de "/phpmyadmin". Par exemple : 192.168.0.100/phpmyadmin :


Vous devez voir apparaitre la fenêtre suivante :



Si, à l'étape précédente, vous avez créé un utilisateur nommé "pi", entrez dans le champ "Utilisateur" la valeur "pi". Sinon entrez la valeur "root". Puis entrez le mot de passe correspondant et validez par la touche "Entrée". La page suivante s'affiche :



Cliquez sur le lien "Comptes d’utilisateurs". Cela permet de créer un utilisateur de test de la base de données. Il pourra être également utilisé par les pages WEB qui doivent accéder à la base de données. Cet utilisateur pourra lire la base de données mais ne pourra ni y écrire, ni la modifier, ni même créer une autre base de données.



Cliquez sur le lien "Ajouter un compte d’utilisateur". :



 - Dans le champ "Nom d'utilisateur" saisissez la valeur "client"
 - Dans le champ "Nom d'hôte" sélectionnez la valeur "Local"
 - Dans le champ "Mot de passe" sélectionnez la valeur "Aucun mot de passe"
 - Cliquez sur le bouton "Exécuter"



 - Activez la case à cocher "SELECT"
 - Cliquez sur le bouton "Exécuter"


On dispose désormais d’un utilisateur avec pouvoirs (pi) et d’un client qui ne peut que lire les bases de données sans les modifier : ‘client’. Vous pouvez désormais fermer le navigateur.


La prochaine étape : Qt et QtCreator.