Ressources informatiques

Ressources informatiques

Ressources informatiques

Installer et utiliser un serveur MariaDB

A présent, le serveur MariaDB est installé automatiquement à la place du serveur MySQL. C'est un fork de MySQL créé en 2009.

Documentation : MariaDB Documentation

Installer Utiliser Accès depuis un hôte distant

Installer

Installer

pi@raspberrypi:~ $ sudo apt-get update
pi@raspberrypi:~ $ sudo apt-get install mariadb-server mariadb-client

Valider l'installation

Vérifier que le processus est démarré
pi@raspberrypi:~ $ ps -e | grep mysql
26673 ?        00:00:00 mysqld
Vérifier que le port utilisé par MariaDB (3306 par défaut) est ouvert

Commande ss : another utility to investigate sockets
Options :

pi@raspberrypi:~ $ ss -lnt sport = :3306
State      Recv-Q Send-Q      Local Address:Port      Peer Address:Port
LISTEN     0      80              127.0.0.1:3306                 *:*

On constate que, par défaut, le serveur MariaDB est accessible uniquement depuis l'adresse locale 127.0.0.1. Pour autoriser l'accès depuis d'autres PC lisez le chapitre Accès depuis un hôte distant.

Vérifier l'état du serveur
pi@raspberrypi:~ $ systemctl status mariadb
 mariadb.service - MariaDB ... database server
...
   Active: active (running) ...
...

Utiliser

Se connecter au serveur

pi@raspberrypi:~ $ sudo mysql -u root
Welcome to the MariaDB monitor.  Commands end with ; or \g.
...
MariaDB [(none)]>

Se déconnecter

MariaDB [(none)]> quit
Bye
pi@raspberrypi:~ $

Charger un script

Nous allons charger le script baseMeubleFournisseur.sql. Ce script crée la base de données meubleFournisseur qui modélise de manière très simplifiée la base de données d'un magasin de meubles. Il sert de support à l'article Requêtes SQL où elle y est décrite. Vous pouvez tranférer un script sur votre Raspberry Pi en procédant comme indiqué dans l'article : Raspberry Pi : Transférer des fichiers

pi@raspberrypi:~ $ sudo mysql -u root < baseMeubleFournisseur.sql

Visualiser les bases de données

Après s'être connecté :

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| meubleFournisseur  |
| mysql              |
| performance_schema |
+--------------------+

Visualiser les tables de votre base

MariaDB [(none)]> use meubleFournisseur
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [meubleFournisseur]>  show tables;
+-----------------------------+
| Tables_in_meubleFournisseur |
+-----------------------------+
| fournisseur                 |
| meuble                      |
+-----------------------------+

Gérer les utilisateurs

Documentation : MariaDB : Account Management SQL Commands

Il faut se connecter à la base à l'aide de l'utilisateur root de MariaDB comme effectué plus haut.

Créer un utilisateur

Nous allons créer l'utilisateur adminBaseMeuble qui pourra se connecter localement au serveur MariaDB avec le mot de passe bonjour.

MariaDB [(none)]> CREATE USER 'adminBaseMeuble'@'localhost' IDENTIFIED BY 'bonjour';

Remarque : si vous souhaitez supprimer un utilisateur créé par erreur, il faut utiliser la commande :

MariaDB [(none)]> DROP USER IF EXISTS 'adminBaseMeuble'@'localhost';
Affecter des droits à un utilisateur

Nous allons donner à l'utilisateur adminBaseMeuble les droits SELECT, INSERT, UPDATE et DELETE sur les tables de la base meubleFournisseur.

MariaDB [(none)]> GRANT SELECT, INSERT, UPDATE, DELETE ON `meubleFournisseur`.* TO `adminBaseMeuble`@`localhost`;
Visualiser les utilisateurs

La table user de la base mysql contient les utilisateurs du système.

MariaDB [(none)]>  SELECT `Host`,`User`,`Password` FROM `mysql`.`user`;
+-----------+-----------------+-------------------------------------------+
| Host      | User            | Password                                  |
+-----------+-----------------+-------------------------------------------+
| localhost | root            |                                           |
| localhost | adminBaseMeuble | *BD885142404C127AC29793EE3FBB1FDB01D2B25F |
+-----------+-----------------+-------------------------------------------+
Visualiser les droits d'un utilisateur
MariaDB [(none)]> SHOW GRANTS FOR 'adminBaseMeuble'@'localhost';
+------------------------------------------------------------------------------------------------------------------------+
| Grants for adminBaseMeuble@localhost                                                                                   |
+------------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'adminBaseMeuble'@'localhost' IDENTIFIED BY PASSWORD '*BD885142404C127AC29793EE3FBB1FDB01D2B25F' |
| GRANT SELECT, INSERT, UPDATE, DELETE ON `meubleFournisseur`.* TO 'adminBaseMeuble'@'localhost'                         |
+------------------------------------------------------------------------------------------------------------------------+

Se connecter à l'aide d'un utilisateur créé précédemment

pi@raspberrypi:~ $ mysql -u adminBaseMeuble -p meubleFournisseur
Enter password:
MariaDB [meubleFournisseur]>

Effectuer une requête SQL

MariaDB Documentation : SQL Statements

Les requêtes SQL sont décrites dans l'article Requêtes SQL

Accès depuis un hôte distant

Précisions apportées par M.S. mis à jour par J.D.

Ouvrir le port pour tous les réseaux IP

Il est nécessaire de modifier la directive bind-address dans le fichier /etc/mysql/mariadb.conf.d/50-server.cnf en l'affectant à la valeur 0.0.0.0 afin que notre serveur soit à l'écoute des requêtes des hôtes de tous les réseaux.

Sauvegarder la configuration initiale
pi@raspberrypi:~ $ sudo cp /etc/mysql/mariadb.conf.d/50-server.cnf /etc/mysql/mariadb.conf.d/50-server.cnf.sav
Effectuer la configuration

Effectuez la modification à l'aide de l'éditeur de votre choix : nano, ...

Modifier /etc/mysql/mariadb.conf.d/50-server.cnf
pi@raspberrypi:~ $ sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

Résultat de la modification :

pi@raspberrypi:~ $ diff /etc/mysql/mariadb.conf.d/50-server.cnf.sav /etc/mysql/mariadb.conf.d/50-server.cnf
29c29
< bind-address          = 127.0.0.1
---
> bind-address          = 0.0.0.0
Redémarrer le serveur MariaDB
pi@raspberrypi:~ $ sudo systemctl restart mariadb
pi@raspberrypi:~ $ systemctl status mariadb
 mariadb.service - MariaDB database server
   Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: en
   Active: active (running)
Visualiser les ports ouverts
pi@raspberrypi:~ $ ss -lnt sport = :3306
State      Recv-Q Send-Q      Local Address:Port     Peer Address:Port
LISTEN     0      80                      *:3306                *:*

Gérer les utilisateurs

Se connecter à la base à l'aide de l'utilisateur root de MySQL.
pi@raspberrypi:~ $ sudo mysql -u root
Créer un utilisateur

Nous allons créer l'utilisateur adminBaseMeuble qui pourra se connecter au serveur MariaDB avec le mot de passe bonjour depuis tous les hôtes du réseau 192.168.1.0/24.

MariaDB [(none)]> CREATE USER 'adminBaseMeuble'@'192.168.1.%' IDENTIFIED BY 'bonjour';
Affecter des droits à un utilisateur

Nous allons donner à l'utilisateur adminBaseMeuble les droits SELECT, INSERT, UPDATE et DELETE sur les tables de la base meubleFournisseur ; il possèdera ces droits s'il se connecte depuis n'importe quel hôte du réseau 192.168.1.0/24.

MariaDB [(none)]>GRANT SELECT, INSERT, UPDATE, DELETE ON meubleFournisseur.* TO 'adminBaseMeuble'@'192.168.1.%';

Se connecter à l'aide d'un utilisateur créé précédemment

Notre serveur MariaDB à pour adresse IP 192.168.1.11

root@Ddebian:~$ mysql -h 192.168.1.11 -u adminBaseMeuble -p meubleFournisseur
Enter password: 
...
MariaDB [meubleFournisseur]>