J'ai une installation de Debian Stretch et une nouvelle installation de Mysql 8.0 (pas encore de changement de configuration). Lorsque j'essaye de créer un nouvel utilisateur avec:
mysql> CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'xyz';
, j'ai obtenu ce qui suit:
ERREUR 1726 (HY000): le moteur de stockage "MyISAM" ne prend pas en charge le système les tables. [mysql.db]
Des suggestions sur la nature du problème?
Merci
4 Réponses :
Vous devriez peut-être envisager de vous éloigner de MyISAM. InnoDB est le moteur par défaut de MySQL depuis la version 5.6, MySQL 8.0 sera la dernière version à avoir une prise en charge limitée.
Vous pouvez consulter les détails dans cet article de blog Percona
Avez-vous exécuté le script de mise à niveau après la mise à niveau? Il aurait dû changer les tables système en InnoDB.
C'était une installation propre sans migration de données. Je viens de charger une base de données (à partir du vidage de 5.6) où se trouvent toutes les tables dans InnoDB et j'ai essayé de créer un nouvel utilisateur.
Était-ce un vidage de toute la base de données ou simplement vos propres schémas? S'il s'agissait de la base de données entière, les tables système du vidage auront peut-être écrasé celles de l'installation.
C'était son propre schéma. J'ai noté que les tables système étaient vraiment dans MyISAM. J'ai trié le problème en réinstallant Mysql. Les tables étaient InnoDB après la réinstallation, j'ai réussi à créer l'utilisateur et à charger le même vidage de base de données. Je ne peux pas dire ce qui a exactement changé la table système en MyISAM. Le seul changement lors du premier essai était que le chargement a échoué à cause de ROW_FORMAT = FIXED dans le vidage par quelques propres tables (triées avec sed -ie 's / ROW_FORMAT = FIXED // g').
J'ai restauré une sauvegarde de base de données dans mon nouveau système de développement MySQL 8 sans réfléchir et j'ai écrasé les tables de la base de données MySQL. Ce n'était pas si difficile à réparer, mais il a juste fallu un peu de piratage pendant un certain temps et c'est ce qui l'a corrigé.
mysqld --initialize
après cela, j'ai pu créer un utilisateur sans problèmes.
La clé était dans le message d'erreur.
ERROR 1726 (HY000): Storage engine 'MyISAM' does not support system tables. [mysql.db]
Je savais donc que c'était mysql.db qui était MyISAM et qu'il fallait quelque chose d'autre donc Je viens de le changer pour InnoDB.
J'espère que cela aide quelqu'un!
Si votre base de données MySQL est du mauvais type, cela fonctionnera ou l'autre alternative serait d'initialiser votre base de données p >
alter table mysql.db ENGINE=InnoDB; alter table mysql.columns_priv ENGINE=InnoDB;
Cela recréera tout. Si vous pouvez vider le SQL avant de le faire, c'est toujours mieux.
Soyez prudent avec ça. Vous pourriez vous retrouver avec "Impossible de charger à partir de mysql.db. La table est probablement corrompue"
Je viens d'obtenir le statut «corrompu» pour la table mysql.db. :( Une idée sur la façon de résoudre ça?
Même problème corrompu, est-ce que quelqu'un l'a résolu?
Si votre base de données mysql est corrompue, vous pouvez toujours la recréer avec mysqld --initialize
J'ai rencontré le même problème après une nouvelle installation de MySQl 8.0 suivie du rechargement d'un ancien fichier de vidage (v 5.7). La solution était de supprimer et de réinstaller MySQL et cette fois a créé un nouveau fichier de vidage à partir du MySQL 5.7 contenant uniquement mes propres tables à l'exclusion des tables système et les a importées dans la v 8.0 MySQL. Tout fonctionne parfaitement.
Solution différente: J'ai eu un vidage MySQL de toutes mes bases de données de MySQL 5.7, y compris la table mysql. Après avoir importé tout le dossier de vidage (y compris cette table mysql), j'ai eu cette erreur. Après une réinstallation complète de MySQL 8.0.21 et la suppression de la table mysql du dossier de vidage, tout a fonctionné comme prévu.