Outils pour utilisateurs

Outils du site


software:applications:mysqldump

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
software:applications:mysqldump [2023/02/21 15:00] – supprimée - modification externe (Unknown date) 127.0.0.1software:applications:mysqldump [2023/02/21 15:00] (Version actuelle) – ↷ Page déplacée de app:mysql:mysqldump à software:applications:mysqldump yoann
Ligne 1: Ligne 1:
 +{{tag>software mysql mysqldump backup sauvegarde troubleshooting dépannage}}
  
 +====== mysqldump ======
 +
 +mysqldump permet de générer une sauvegarde d'une ou plusieurs bases de données MySQL. Pour que la sauvegarde puisse être effectuée, l'utilisateur doit posséder au moins les droits ''**SELECT**'' et ''**LOCK TABLES**''.
 +
 +Il est conseillé d'utiliser un utilisateur dédié, autorisé seulement localement à effectuer les dump et ne possédant que les droits nécessaires à sa tâche (principe du moindre privilège).
 +
 +===== Créer l'utilisateur =====
 +
 +En tant qu'administrateur de la base, entrer la commande suivante pour autoriser l'utilisateur duplicateur en lecture sur toutes les bases du serveur:
 +
 +<code SQL>
 +-- Créer l'utilisateur s'il n'existe pas
 +CREATE USER 'duplicateur'@'localhost';
 +
 +-- Attribuer les droits à l'utilisateur
 +GRANT SELECT, LOCK TABLES on *.* to 'duplicateur'@'localhost';
 +FLUSH privileges;
 +</code>
 +
 +===== Générer le dump =====
 +
 +Pour générer le dump d'une base, il suffit depuis un script local ou en ligne de commande d'invoquer l'utilitaire mysqldump avec l'utilisateur duplicateur. Dans l'exemple ci-dessous, la base de donnée ''ss2j'' est sauvegardée  dans le fichier ''dump-base-ss2j.sql''.
 +<code>
 +yoann@janus:/tmp$ mysqldump -u duplicateur ss2j > ./dump-base-ss2j.sql
 +</code>
 +
 +===== Dépannage =====
 +
 +A l’exécution **mysqdump** affiche une erreur cependant fichier dump est créé et le code de retour de l'application vaut 0:
 +
 +<code bash>
 +mysqldump -u anUser --databases aDatabase > /tmp/aDatabase.sql 
 +</code>
 +<file>
 +mysqldump: Error: 'Access denied; you need (at least one of) the PROCESS privilege(s) for this operation' when trying to dump tablespaces
 +</file>
 +
 +Le message indique que le privilège PROCESS est nécessaire pour créer un dump intégrant les "tablespaces". Pour éviter la levée de cette erreur on peut:
 +  * Utiliser l'option **%%--no-tablespaces%%** lors de l'invocation de **mysqldump** (solution généralement recommandée);
 +  * Attribuer le privilège PROCESS à l'utilisateur (besoin spécifique).
 +
 +<code bash>
 +# Création du dump sans tablespaces (recommandé)
 +mysqldump -u anUser --databases aDatabase --no-tablespaces > /tmp/aDatabase.sql 
 +</code>
 +
 +
 +Si l'on fait le choix d'attribuer le privilège PROCESS, depuis une console SQL avec un utilisateur autorisé à attribuer des privilèges:
 +<code SQL>
 +grant PROCESS on aDatabase.* to 'anUser'@'localhost';
 +FLUSH privileges;
 +</code>
 +
 +
 +===== Références =====
 +
 +  * https://dba.stackexchange.com/questions/271981/access-denied-you-need-at-least-one-of-the-process-privileges-for-this-ope#273040