====== 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;