July 14, 2011

Plesk Error: Table mysql.servers doesn’t exist

You may receive a “Table ‘mysql.servers’ doesn’t exist” error message while adding a database user in Plesk or while restarting the MySQL service. The complete error message is:

Error: Connection to the database server has failed:
Table 'mysql.servers' doesn't exist

OR

Can't open and lock privilege tables:
Table 'mysql.servers' doesn't exist

This problem occurs when MySQL server is upgraded from an older to a newer version and the upgrade remains incomplete. Since MySQL often introduces new tables with the newer versions, you need to run the “mysql_fix_privilege_tables” script located in the “/usr/bin/” directory so that the MySQL administrative database is updated with the latest contents thus fixing the privileges of the database users as well.

To fix the issue, SSH to your server as root and execute the command:

# mysql_fix_privilege_tables --user=admin --password=`cat /etc/psa/.psa.shadow` --verbose

This will resolve the issue and allow new user additions and MySQL configuration changes.