En essayant d'accorder des privilèges à un utilisateur MySQL sur un serveur CentOS 6.x simple, je recevais cette erreur sur la console mysql :La table d'erreurs MySQL "mysql.servers" n'existe pas
J'ai été surpris… la première chose qui m'est venue à l'esprit était "la base de données mysql a été corrompue", et en effet c'était le problème. La table mysql.user devrait certainement exister sur les installations normales de MySQL, donc quelque chose a été gâché lors de l'installation de MySQL.
Correction de la table d'erreur MySQL "mysql.servers" n'existe pas d'erreur
Essayez de vérifier si mysql.user existe
use mysql; select * from user;
La première chose que j'ai essayé de résoudre ce problème a été de réinstaller la base de données mysql pour recréer toutes les tables mysql par défaut en démarrant MYSQL sans aucun privilège :
/usr/bin/mysql --skip-grant-tables & mysql -u root
Ensuite, essayez de l'exécuter en tant que root depuis le terminal Linux :
mysql_install_db
Après cela, tuez le processus MySQL précédent et redémarrez MYSQL normalement :
ps -aux | grep mysql
Et tuez -9 tout le processus.
service mysqld restart
Si cela ne résout pas votre problème, vérifiez les autorisations de votre répertoire de données MySQL, elles ont peut-être changé d'une manière ou d'une autre.
Dernière option :créer un vidage mysql complet de chaque base de données , supprimez complètement mysql et réinstallez-le à partir de zéro.
Créez des sauvegardes de chaque base de données :
MYSQLPASS=putyourmysqlrootpasshere for i in $(mysql -u root -p$MYSQLPASS -Bse 'show databases'); do mysqldump --opt -p$MYSQLPASS $i -c> /root/mysql-dump-$i.sql; done
Vérifiez si vos sauvegardes sont correctes :
ls -alh /root/mysql-dump*
Supprimer le serveur MySQL
yum remove mysql-server rm /var/lib/mysql -rf
Réinstaller MYSQL Server
yum install mysql-server service mysql start
Créez toutes les bases de données manuellement, comme pour les privilèges et les utilisateurs mysql, puis sauvegardez vos sauvegardes .sql dans chaque base de données.
Conclusion
Comme vous l'avez vu, la seule solution que j'ai trouvée pour cela était de supprimer complètement mysql et de le réinstaller à partir de zéro. Cependant… connaissez-vous un autre correctif pour l'erreur MySQL Error Table 'mysql.servers' does not exist ?
Autres lectures :
- MySQL ne trouve pas la table