MySQL/MariaDB falla al arrancar en servidor Plesk Linux: Can’t open and lock privilege tables

 In Hosting, Servidores Dedicados

Síntomas:

  • MySQL/MariaDB falla al iniciar debido a tablas que faltan en la base de datos ‘MySql9. Errores similares a los que aparecen en los siguientes logs.
    •  CentOS/RHEL/var/log/mysqld.log
    • Debian/Ubuntu/var/log/mariadb/mariadb.log

/usr/libexec/mysqld: Incorrect file format ‘plugin’
[ERROR] Can’t open the mysql.plugin table. Please run mysql_upgrade to create it.

[ERROR] Fatal error: Can’t open and lock privilege tables: Incorrect file format ‘host’

O

/usr/sbin/mysqld: Table ‘mysql.plugin’ doesn’t exist
[ERROR] Can’t open the mysql.plugin table. Please run mysql_upgrade to create it.

[ERROR] Fatal error: Can’t open and lock privilege tables: Table ‘mysql.host’ doesn’t exist

O

[ERROR] Can’t open the mysql.plugin table. Please run mysql_upgrade to create it.
[ERROR] Can’t open and lock privilege tables: Table ‘mysql.servers’ doesn’t exist
[ERROR] Fatal error: Can’t open and lock privilege tables: Table ‘mysql.user’ doesn’t exist

 

Problemas observados:

  • Plesk no está accesible dando uno de los siguientes mensajes en el navegador:

ERROR: PleskDBException: Unable to connect to database: mysql_connect(): No such file or directory /var/run/mysqld/mysqld.sock (Error code: 2002). Please check that database server is started and accessible. (Abstract.php:69)

OR

ERROR: Uncaught exception ‘Zend_Log_Exception’ with message ‘”/var/log/plesk/panel.log” cannot be opened with mode “a”‘ in /usr/local/psa/admin/externals/Zend/Log/Writer/Stream.php:81

OR

SQLSTATE[HY000] [2002] No such file or directory.

Causa:

Hay tablas que faltan o están corruptas en la base de datos ‘mysql’

 

Solución:

  1. Conectar al servidor Plesk vía SSH
  2. Modificar el fichero de configuración:
    • en Centos/RHEL:
      • # nano /etc/my.cnf

    • en Debian/Ubuntu:
      • # nano /etc/mysql/my.cof

  3. Añadir la línea skip-grant-tables bajo la directiva[mysql]
    • [mysqld] skip-grant-tables

  4. Iniciar MySql con uno de los comandos siguientes dependiendo del sistema operativo:
    • # service mariadb restart

    • # service mysql restart

    • # service mysqld restart

  5. Recrear las tablas MySQL con el comando mysql_upgrade:
    • # mysql_upgrade –force

  6. Reiniciar MySQL
    • # service mariadb restart

    • # service mysql restart

    • # service mysqld restart

  7. Restaurar la base de datos ‘mysql’ desde una copia diaria de plesk:
    • # cd /var/lib/psa/dumps

    • debería ser mysql.daily.dump.0.gz (también 1.gz o 2.gz, siempre buscamos la última que funcione, en este caso la 0.gz es la última)
    • # zcat mysql.daily.dump.0.gz | sed -n ‘/– Current Database: `mysql`/,/– Current Database:*/p’ | MYSQL_PWD=`cat /etc/psa/.psa.shadow` mysql -uadmin

  8. Eliminar la línea skip-grant-tables del my.conf
  9. Reiniciar MySQL
    • # service mariadb restart

    • # service mysql restart

    • # service mysqld restart

 

El problema debería quedar resuelto.

Recent Posts

Start typing and press Enter to search