Question

Ireceived a downtime alert from Nagios that mysql was down on a host. I logged in to the host and found the following error in the mysql error.log file. What are the proper steps to troubleshoot this?

root@ubuntu:/var/log# tail -f mysql/error.log
101202 11:09:21 [ERROR] Can't open the mysql.plugin table. Please run 
                        mysql_upgrade to create it.
101202 11:09:21  InnoDB: Started; log sequence number 0 44233
101202 11:09:21 [ERROR] /usr/sbin/mysqld: Can't find file: './mysql/host.frm' 
                        (errno: 13)
101202 11:09:21 [ERROR] Fatal error: Can't open and lock privilege tables: 
                        Can't find file: './mysql/host.frm' (errno: 13)
101202 11:09:51 [Note] Plugin 'FEDERATED' is disabled.
                       /usr/sbin/mysqld: Can't find file: './mysql/plugin.frm' 
                       (errno: 13)
101202 11:09:51 [ERROR] Can't open the mysql.plugin table. Please run 
                        mysql_upgrade to create it.
101202 11:09:52  InnoDB: Started; log sequence number 0 44233
101202 11:09:52 [ERROR] /usr/sbin/mysqld: Can't find file: './mysql/host.frm' 
                        (errno: 13)
101202 11:09:52 [ERROR] Fatal error: Can't open and lock privilege tables: 
                        Can't find file: './mysql/host.frm' (errno: 13)
101202 11:10:22 [Note] Plugin 'FEDERATED' is disabled.
                       /usr/sbin/mysqld: Can't find file: './mysql/plugin.frm' 
                       (errno: 13)
101202 11:10:22 [ERROR] Can't open the mysql.plugin table. Please run 
                        mysql_upgrade to create it.
101202 11:10:22  InnoDB: Started; log sequence number 0 44233
101202 11:10:22 [ERROR] /usr/sbin/mysqld: Can't find file: './mysql/host.frm' 
                        (errno: 13)
101202 11:10:22 [ERROR] Fatal error: Can't open and lock privilege tables: 
                        Can't find file: './mysql/host.frm' (errno: 13)
Was it helpful?

Solution

Figure out why MySQL can't find its tables. Go to the MySQL data directory and look for the mysql subdirectory (corresponding to the mysql database which contains things like users, procs, privileges, etc.). Perhaps someone deleted the mysql database. Perhaps someone overwrote your my.cnf configuration file with one pointing to the wrong data directory.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top