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 :
-l, --listening : Display only listening sockets.
-n, --numeric : Do not try to resolve service names.
-t, --tcp : Display TCP sockets.
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 StatementsLes 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]>