Table des matières

MariaDB

Relancer le serveur

Sur une Debian :

systemctl stop mariadb
systemctl start mariadb

Administrer les bases de données

Se connecter sur le serveur avec la commande mariadb

Lister les bases existantes 1):

SHOW DATABASES;

Créer une base 2)

CREATE DATABASE nom_de_la_base;

Supprimer une base 3) :

DROP DATABASE nom_de_la_base;

Connaître la version du serveur :

SELECT VERSION();

Administrer les utilisateurs

Lister les utilisateurs :

SELECT USER, host FROM mysql.user;

Créer un utilisateur : 4)

CREATE USER 'utilisateur'@'localhost'; -- accès local uniquement
CREATE USER 'utilisateur'@'%';         -- accès distant

Attribuer des droits à un utilisateur : 5)

GRANT ALL    ON nom_de_la_base.* TO 'utilisateur'@'localhost'; -- tous les droits en local
GRANT INSERT, SELECT, UPDATE, DELETE ON nom_de_la_base.* TO 'utilisateur'@'localhost'; -- manipulation des données en local
GRANT SELECT ON nom_de_la_base.* TO 'utilisateur'@'%';         -- lecture seule en accès distant

Consulter les droits d'un utilisateur : 6)

SHOW GRANTS FOR utilisateur;

Retirer les droits d'un utilisateur : 7)

REVOKE ALL PRIVILEGES ON *.* FROM `user`@`%`;

Supprimer un utilisateur :

DROP USER 'utilisateur'@'localhost';

Rendre accessible sur le réseau

La documentation : https://mariadb.com/kb/en/configuring-mariadb-for-remote-client-access/

Solution qui marche sur une Debian :

Obtenir les journaux d'erreur

Se connecter sur le serveur avec la commande mariadb et taper la commande suivante pour connaitre l'emplacement des logs :

MariaDB [(none)]> show global variables like 'log_error';

+---------------+--------------------------+
| Variable_name | Value                    |
+---------------+--------------------------+
| log_error     | /var/log/mysql/error.log |
+---------------+--------------------------+

Obtenir diagnostic santé des tables

Dans la console de l'OS, lancer la commande mariadb-check

mariadb-check --all-databases > /tmp/mariadb-check.txt

Chercher “warning” pour trouver les tables problématiques.

Source : https://mariadb.com/kb/en/mariadb-check/

Réparer les tables d'une base

mariadb-check -r limesurvey > /tmp/mariadb-repair.txt

Source : https://mariadb.com/kb/en/mariadb-check/

Obtenir taille des tables d'une base

Tailles en mégaoctets

SELECT (data_length+index_length)/POWER(1024,2) tablesize_mb, TABLE_NAME 
FROM information_schema.tables 
WHERE table_schema='limesurvey'
ORDER BY tablesize_mb DESC;

Produire une sauvegarde

Pour l'ensemble du serveur :

mariadb-dump --all-databases --single-transaction > nom_fichier.sql

Pour une base en particulier :

mariadb-dump nom_base --single-transaction > nom_fichier.sql

Pour exclure une table de la sauvegarde, utiliser l'option --ignore-table :

mariadb-dump nom_base --single-transaction --ignore-table=nom_table > nom_fichier.sql

Pour ne pas sauvegarder les données d'une table (n'exporter que sa structure), utiliser l'option --ignore-table-data :

mariadb-dump nom_base --single-transaction --ignore-table-data=nom_base.nom_table > nom_fichier.sql

Source : https://mariadb.com/kb/en/mariadb-dump/#usage

Restaurer une sauvegarde

mariadb db_name < backup-file.sql

Source : https://mariadb.com/kb/en/mariadb-dump/#restoring

Ordonnanceur

-- Activer l'ordonnanceur MariaDB
SET GLOBAL event_scheduler = ON;
 
-- Vérifier si l'ordonnanceur est activé : devrait contenir "event_scheduler"
SHOW PROCESSLIST;
 
-- Se positionner sur la bonne base
USE limesurvey;
 
-- Créer un évènvement de purge des logs d'audit LimeSurvey
CREATE EVENT purge_auditlog 
  ON SCHEDULE EVERY 1 DAY DO 
   DELETE FROM lime_auditlog_log WHERE created < DATE_SUB(CURRENT_DATE(),INTERVAL 2 MONTH);
 
-- Vérifier présence de l'évènement
SHOW EVENTS;