GNU/Linux >> Tutoriels Linux >  >> Cent OS

La table d'erreurs MySQL 'mysql.servers' n'existe pas

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 
La table d'erreur MySQL 'mysql.servers' n'existe pas a été modifiée pour la dernière fois :1er décembre 2016 par Esteban Borges
Cent OS
  1. Serveurs Web et serveurs MySQL à charge équilibrée

  2. Comment réparer une table de base de données MySQL corrompue

  3. Supprimer des tables dans MySQL

  4. Erreur mysql datetime DEFAULT CURRENT_TIMESTAMP

  5. Récupérer la base de données mysql - mysql/mysqldump donne la table <database>.<tablename> n'existe pas (1146)

Comment réparer la base de données MySQL

Comment exporter une table de MySQL vers CSV

Comment optimiser les tables MySQL

Comment supprimer une table dans MySQL

Aide-mémoire des commandes MySQL

Comment utiliser les déclencheurs MySQL