Při pokusu o udělení oprávnění uživateli MySQL na prostém serveru CentOS 6.x se mi na konzole mysql zobrazila tato chyba:Tabulka chyb MySQL ‚mysql.servers‘ neexistuje
Byl jsem překvapen… první, co mě napadlo, bylo ‚databáze mysql se poškodila‘, a to byl skutečně problém. Tabulka mysql.user by na normálních instalacích MySQL rozhodně měla existovat, takže v instalaci MySQL se něco pokazilo.
Oprava chybové tabulky MySQL „mysql.servers“ neexistuje chyba
Zkuste zkontrolovat, zda existuje soubor mysql.user
use mysql; select * from user;
První věc, kterou jsem se pokusil vyřešit tento problém, bylo přeinstalovat databázi mysql, abych znovu vytvořil všechny výchozí tabulky mysql počínaje MYSQL bez jakýchkoli oprávnění:
/usr/bin/mysql --skip-grant-tables & mysql -u root
Pak to zkusil spustit jako root z terminálu Linux:
mysql_install_db
Poté ukončete předchozí proces MySQL a restartujte MYSQL normálně:
ps -aux | grep mysql
A zabijte -9 celý proces.
service mysqld restart
Pokud to váš problém nevyřeší, zkontrolujte oprávnění k datovému adresáři MySQL, možná se nějak změnila.
Poslední možnost:vytvořit úplný výpis mysql pro každou databázi , zcela odstraňte mysql a znovu jej nainstalujte od začátku.
Vytvořte zálohy každé databáze:
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
Zkontrolujte, zda jsou vaše zálohy v pořádku:
ls -alh /root/mysql-dump*
Odeberte server MySQL
yum remove mysql-server rm /var/lib/mysql -rf
Přeinstalujte server MYSQL
yum install mysql-server service mysql start
Vytvořte všechny databáze ručně, stejně jako uživatelé s oprávněními a mysql, a poté zálohujte zálohy .sql do každé databáze.
Závěr
Jak jste viděli, jediné řešení, které jsem pro to našel, bylo úplně odstranit mysql a znovu nainstalovat od nuly. Nicméně… znáte nějakou jinou opravu chyby MySQL Error Table „mysql.servers“ neexistuje?
Další čtení:
- MySQL nemůže najít tabulku