Erreur definer lors d’un mysqldump

Récemment j’ai eu un petit souci sur un serveur avec une base de données impossible à sauvegarder avec mysqldump. J’obtenais systématiquement l’erreur suivante :

mysqldump: Got error: 1449: "The user specified as a definer ('<username>'@'%') does not exist" when using LOCK TABLES

C’est bien la première fois que je suis confronté à cette erreur, les recherches sur google ne m’ont pas donné de solution clair. J’ai fini par créer l’utilisateur manquant (voici un très bon article : https://www.digitalocean.com/community/tutorials/how-to-create-a-new-user-and-grant-permissions-in-mysql-fr)

MariaDB [(none)]> CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'user'@'localhost';
MariaDB [(none)]> FLUSH PRIVILEGES;

La création de l’utilisateur manquant a résolu mon problème, mais je ne savais toujours pas pourquoi j’ai eu cette erreur. Après quelque recherche j’ai fini par trouver que la base de données en question possédait une vue, et les vues comme les procédures stockées sont créé avec un DEFINER qui détermine les privilèges d’accès. Dans mon exemple la base étant migrée d’un environnement d’intégration vers un environnement de prod ne disposant pas des mêmes comptes utilisateurs, il y a eu l’erreur qui est apparu.

0 Comments

Leave a Reply

Votre adresse e-mail ne sera pas publiée.

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.