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
adminX@serveurX:~$ sudo apt update adminX@serveurX:~$ sudo apt install mariadb-server mariadb-client
Valider l'installation
Vérifier que le processus est démarré
adminX@serveurX:~$ ps -e | grep mariadbd 10303 ? 00:00:00 mariadbd
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.
adminX@serveurX:~$ 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
adminX@serveurX:~$ systemctl status mariadb ● mariadb.service - MariaDB ... database server ... Active: active (running) ... ...
Utiliser
Se connecter au serveur
adminX@serveurX:~$ sudo mysql -u root Welcome to the MariaDB monitor. Commands end with ; or \g. ... MariaDB [(none)]>
Se déconnecter
MariaDB [(none)]> quit Bye adminX@serveurX:~$
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 serveur MariaDB
en procédant comme indiqué dans l'article : Raspberry Pi : Transférer des fichiers
Code du script utilisé pour l'exemple :
adminX@serveurX:~$ cat baseMeubleFournisseur.sql DROP DATABASE IF EXISTS meubleFournisseur; CREATE DATABASE meubleFournisseur; USE meubleFournisseur; CREATE TABLE fournisseur ( fou_id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, fou_nom VARCHAR(20) UNIQUE NOT NULL, fou_ville VARCHAR(60) NOT NULL ) ENGINE = INNODB; CREATE TABLE meuble ( meu_id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, meu_designation VARCHAR(80) NOT NULL, meu_prix DECIMAL(6,2) NOT NULL DEFAULT '9999.99', meu_fouId SMALLINT UNSIGNED NOT NULL, FOREIGN KEY (meu_fouId) REFERENCES fournisseur(fou_id) ) ENGINE = INNODB; INSERT INTO fournisseur (fou_nom, fou_ville) VALUES ('G Meubles','Arpajon'), ('B Meubles','Etampes'), ('H Meubles','Dourdan'); INSERT INTO meuble (meu_id, meu_designation, meu_prix, meu_fouId) VALUES ('123','chaise verte', '40.10', '1'), ('456','chaise bleue', '40.90', '1'), ('4401','chaise rouge',' 50.10', '2'), ('5003','table verte', '500', '3');
Chargement du script
adminX@serveurX:~$ 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 DROP
. Exemple
pour l'utilisateur ci-dessus :
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 | mariadb.sys | | | localhost | root | invalid | | localhost | mysql | invalid | | 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
adminX@serveurX:~$ 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
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
adminX@serveurX:~$ 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
adminX@serveurX:~$ sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
Résultat de la modification :
adminX@serveurX:~$ 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
adminX@serveurX:~$ sudo systemctl restart mariadb adminX@serveurX:~$ 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
adminX@serveurX:~$ 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.
adminX@serveurX:~$ 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]>