====== 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 ((https://mariadb.com/kb/en/show-databases/)):
SHOW DATABASES;
Créer une base ((https://mariadb.com/kb/en/create-database/))
CREATE DATABASE nom_de_la_base;
Supprimer une base ((https://mariadb.com/kb/en/drop-database/)) :
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 : ((https://mariadb.com/kb/en/create-user/))
CREATE USER 'utilisateur'@'localhost'; -- accès local uniquement
CREATE USER 'utilisateur'@'%'; -- accès distant
Attribuer des droits à un utilisateur : ((https://mariadb.com/kb/en/grant/))
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 : ((https://mariadb.com/kb/en/show-grants/))
SHOW GRANTS FOR utilisateur;
Retirer les droits d'un utilisateur : ((https://mariadb.com/kb/en/revoke/))
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 :
* Éditer ''/etc/mysql/mariadb.conf.d/50-server.cnf''
* Remplacer ''bind-address=127.0.0.1'' par ''bind-address=0.0.0.0''
===== 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;