web-dev-qa-db-fra.com

Erreur Mysql: l'utilisateur spécifié comme définisseur ('mysql.infoschema'@'localhost') n'existe pas 'lorsqu'il tente de vider des espaces de table

Après avoir mis à niveau MySQL 5.7 vers MySQL 8.0, j'ai redémarré MySQL et une erreur s'est produite: l'utilisateur spécifié comme défineur ('mysql.infoschema'@'localhost') n'existe pas 'lors de la tentative de vidage des tablespaces . I ne comprends pas pourquoi ce problème se produit. Et je veux savoir comment le résoudre

31
stackzhao

J'ai eu la même erreur quand j'ai accidentellement rétrogradé ma version de MySQL de 8 à 5.7. Au premier démarrage, l'ancienne version cassait quelque chose, de sorte que la version 8 montrait l'erreur ci-dessus. Dans mon cas, je devais entrer dans le conteneur de menu fixe où MySQL fonctionnait en premier

docker exec -it mysql bash

Ensuite, j'ai essentiellement suivi les étapes ici

mysql -u root -p
mysql> SET GLOBAL innodb_fast_shutdown = 1;
mysql_upgrade -u root -p

Cela a pris quelques minutes mais ensuite tout fonctionnait à nouveau.

141
Brom

Cela peut se produire quelque temps après la configuration de votre nouveau système.

Comme solution suggérée, essayez simplement sur Windows

1) ouvrir cmd.exe en tant qu'administrateur

2) exécuter mysql_upgrade.exe -uyour_user_name -pyour_password

mysql_upgrade.exe peut être localisé à 

C:\Program Files\MySQL\MySQL Server 8.0\bin

Ensuite, exécutez ce qui suit pour voir si l'utilisateur infoschema est apparu.

select user, Host from mysql.user;
7
Mikhail D

Dans mon cas, une telle erreur était due au fait que j'avais modifié l'hôte de l'utilisateur dba de% à localhost pour renforcer la sécurité.

J'ai utilisé "abcdba" avec le droit DDL pour créer un schéma de base de données et "abc" avec le droit CURD pour que le service Web utilise la base de données. Après le changement, les opérations de lecture étaient correctes mais les opérations d’écriture ont échoué avec le message d’erreur dans le terminal opérateur.

Le privilège de vidage ou le redémarrage du serveur n'a pas résolu le problème. Ensuite, j'ai changé en hôte de l'utilisateur dba à%. Ensuite, les choses sont redevenues normales.

Apparemment, mysql n'aime pas les changements d'hôte de l'utilisateur dba, et les bases de données existantes créées par cet utilisateur dba auront des problèmes si l'hôte de l'utilisateur dba est modifié.

En gros, changer l'hôte de l'utilisateur dba revient à supprimer l'utilisateur abcdba @% et à créer un nouvel utilisateur abcdba @ localhost. Voici le message d'erreur, puisque abcdba @% et abcdba @ localhost sont deux noms d'utilisateur complètement qualifiés différemment.

0
ZZZ