informatique:mysql:requetes_administration
Différences
Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
informatique:mysql:requetes_administration [2017/09/02 02:14] – créée alexis | informatique:mysql:requetes_administration [2022/09/23 05:11] (Version actuelle) – alexis | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== Requêtes d' | ====== Requêtes d' | ||
===== Affichage des erreurs ===== | ===== Affichage des erreurs ===== | ||
+ | <WRAP prewrap> | ||
<code sql> | <code sql> | ||
SHOW ERRORS | SHOW ERRORS | ||
</ | </ | ||
+ | </ | ||
Plus d' | Plus d' | ||
+ | |||
===== Affichage des alertes ===== | ===== Affichage des alertes ===== | ||
+ | <WRAP prewrap> | ||
<code sql> | <code sql> | ||
SHOW WARNINGS | SHOW WARNINGS | ||
</ | </ | ||
+ | </ | ||
Plus d' | Plus d' | ||
+ | |||
===== Affichage de la description d'une table ===== | ===== Affichage de la description d'une table ===== | ||
+ | <WRAP prewrap> | ||
<code sql> | <code sql> | ||
DESC < | DESC < | ||
</ | </ | ||
+ | </ | ||
Plus d' | Plus d' | ||
+ | |||
===== Purge des caches ===== | ===== Purge des caches ===== | ||
+ | <WRAP prewrap> | ||
<code sql> | <code sql> | ||
/* Ferme les tables ouvertes, force la fermeture des tables utilisées, purge le tampon de requêtes */ | /* Ferme les tables ouvertes, force la fermeture des tables utilisées, purge le tampon de requêtes */ | ||
Ligne 23: | Ligne 33: | ||
FLUSH HOSTS | FLUSH HOSTS | ||
</ | </ | ||
+ | </ | ||
Plus d' | Plus d' | ||
===== Changement de mot de passe ===== | ===== Changement de mot de passe ===== | ||
+ | <WRAP prewrap> | ||
<code sql> | <code sql> | ||
SET PASSWORD = PASSWORD('< | SET PASSWORD = PASSWORD('< | ||
</ | </ | ||
+ | </ | ||
===== Changer les droits d'un utilisateur ===== | ===== Changer les droits d'un utilisateur ===== | ||
+ | <WRAP prewrap> | ||
<code sql> | <code sql> | ||
/* Pour donner les droits à tous les hôtes, il faut utiliser % */ | /* Pour donner les droits à tous les hôtes, il faut utiliser % */ | ||
Ligne 38: | Ligne 51: | ||
FLUSH PRIVILEGES; | FLUSH PRIVILEGES; | ||
</ | </ | ||
+ | </ | ||
===== Récupérer la liste des index d'une base de données ===== | ===== Récupérer la liste des index d'une base de données ===== | ||
+ | <WRAP prewrap> | ||
<code sql> | <code sql> | ||
SELECT DISTINCT s.INDEX_SCHEMA | SELECT DISTINCT s.INDEX_SCHEMA | ||
Ligne 50: | Ligne 65: | ||
AND s.TABLE_SCHEMA = '< | AND s.TABLE_SCHEMA = '< | ||
</ | </ | ||
+ | </ | ||
+ | ===== Gérer les processus en cours ===== | ||
+ | <WRAP prewrap> | ||
+ | <code sql> | ||
+ | -- Affiche la liste des processus en cours | ||
+ | show processlist; | ||
+ | |||
+ | -- Arrête un processus en le sélectionnant par son id | ||
+ | kill <id>; | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ===== Comparer le schéma de deux tables ===== | ||
+ | <WRAP prewrap> | ||
+ | <code sql> | ||
+ | SELECT COLUMN_NAME | ||
+ | , ORDINAL_POSITION | ||
+ | , DATA_TYPE | ||
+ | , COLUMN_TYPE | ||
+ | FROM information_schema.`COLUMNS` | ||
+ | WHERE TABLE_SCHEMA = DATABASE() | ||
+ | AND TABLE_NAME IN ('< | ||
+ | GROUP BY COLUMN_NAME | ||
+ | , ORDINAL_POSITION | ||
+ | , DATA_TYPE | ||
+ | , COLUMN_TYPE | ||
+ | HAVING COUNT(1)=1 | ||
+ | </ | ||
+ | </ | ||
+ | La requête précédente est un peu violente car elle valide que les champs sont à la même position. | ||
+ | En voici une qui est moins restrictive car elle ne fait pas cette vérification : | ||
+ | <WRAP prewrap> | ||
+ | <code sql> | ||
+ | SELECT COLUMN_NAME | ||
+ | , DATA_TYPE | ||
+ | , COLUMN_TYPE | ||
+ | FROM information_schema.`COLUMNS` | ||
+ | WHERE TABLE_SCHEMA = DATABASE() | ||
+ | AND TABLE_NAME IN ('< | ||
+ | GROUP BY COLUMN_NAME | ||
+ | , DATA_TYPE | ||
+ | , COLUMN_TYPE | ||
+ | HAVING COUNT(1)=1 | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ===== Récupérer la liste des tables avec une colonne manquante ===== | ||
+ | Dans certaines tables, on travaille avec les couples de colonnes '' | ||
+ | <WRAP prewrap> | ||
+ | <code sql> | ||
+ | SELECT @tableSchema := ' | ||
+ | , @columnName := ' | ||
+ | |||
+ | -- Première écriture de la requête (naïve). Le temps d' | ||
+ | SELECT t.TABLE_NAME | ||
+ | FROM information_schema.TABLES AS t | ||
+ | WHERE t.TABLE_SCHEMA = @tableSchema | ||
+ | AND EXISTS ( | ||
+ | SELECT 1 | ||
+ | FROM information_schema.`COLUMNS` AS c | ||
+ | WHERE c.TABLE_SCHEMA = t.TABLE_SCHEMA | ||
+ | AND c.TABLE_NAME = t.TABLE_NAME | ||
+ | AND c.COLUMN_NAME = CONCAT(@columnName, | ||
+ | ) | ||
+ | AND NOT EXISTS ( | ||
+ | SELECT 1 | ||
+ | FROM information_schema.`COLUMNS` AS c | ||
+ | WHERE c.TABLE_SCHEMA = t.TABLE_SCHEMA | ||
+ | AND c.TABLE_NAME = t.TABLE_NAME | ||
+ | AND c.COLUMN_NAME = CONCAT(@columnName, | ||
+ | ); | ||
+ | |||
+ | -- Seconde écriture de la requête. Le temps d' | ||
+ | SELECT c.TABLE_NAME | ||
+ | FROM information_schema.`COLUMNS` AS c | ||
+ | WHERE c.TABLE_SCHEMA = @tableSchema | ||
+ | AND c.COLUMN_NAME LIKE CONCAT(@columnName, | ||
+ | GROUP BY c.TABLE_NAME | ||
+ | HAVING COUNT(1) = 1; | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ===== Calculer la taille des données ===== | ||
+ | <WRAP prewrap> | ||
+ | <code sql> | ||
+ | -- Afficher la taille globale de l' | ||
+ | SELECT TABLE_SCHEMA AS "Nom de la base de données" | ||
+ | , CONCAT(ROUND(SUM(DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024, 0), " MB") AS " | ||
+ | FROM information_schema.TABLES | ||
+ | GROUP BY TABLE_SCHEMA | ||
+ | |||
+ | -- Afficher le détail de la taille des tables d'une base de données | ||
+ | SELECT TABLE_NAME AS "Nom de la table" | ||
+ | , TABLE_ROWS AS " | ||
+ | , CONCAT(ROUND(DATA_LENGTH / 1024 / 1024, 2), " MB") AS " | ||
+ | , CONCAT(ROUND(INDEX_LENGTH / 1024 / 1024, 2), " MB") AS " | ||
+ | , CONCAT(ROUND(((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024), 2), " MB") AS " | ||
+ | FROM information_schema.TABLES | ||
+ | WHERE TABLE_SCHEMA = " | ||
+ | ORDER BY (DATA_LENGTH + INDEX_LENGTH) | ||
+ | , TABLE_NAME | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ===== Logguer les requêtes ===== | ||
+ | <WRAP prewrap> | ||
+ | <code sql> | ||
+ | -- Définition de la destination (mysql.general_log) | ||
+ | SET GLOBAL log_output = ' | ||
+ | -- Activation du logging | ||
+ | SET GLOBAL general_log = ' | ||
+ | -- Désactivation du logging | ||
+ | SET GLOBAL general_log = ' | ||
+ | -- Purge de la table (uniquement quand le logging est arrêté) | ||
+ | TRUNCATE table mysql.general_log | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | <WRAP info> | ||
+ | Pour logguer dans un fichier : | ||
+ | <WRAP prewrap> | ||
+ | <code sql> | ||
+ | -- Définition de la destination | ||
+ | SET GLOBAL log_output = ' | ||
+ | -- Définition du fichier | ||
+ | SET GLOBAL general_log_file = "</ | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
informatique/mysql/requetes_administration.1504343687.txt.gz · Dernière modification : 2017/09/02 02:14 de alexis