Logo da MMHospedagem
Carregando...
MySQL/MariaDB falha ao iniciar em um servidor Plesk para Linux: não é possível abrir e bloquear tabelas de privilégios
imprimir
  • 0

Sintomas

  • O MySQL/MariaDB falha ao iniciar devido às tabelas ausentes/corrompidas no banco de dados 'mysql'. As seguintes mensagens de erro aparecem em /var/log/mysqld.log ou /var/log/mariadb/mariadb.log:

    [ERROR] Fatal error: Can't open and lock privilege tables: Incorrect file format '<table_name>'

    [ERROR] Fatal error: Can't open and lock privilege tables: Table '<table_name>' doesn't exist


    /usr/sbin/mysqld: Table '<table_name>' doesn't exist
    [ERROR] Can't open the <table_name> table. Please run mysql_upgrade to create it.

    Could not open mysql.plugin table: "Table 'mysql.plugin' doesn't exist". Some plugins may be not load

  • O Plesk não está acessível com uma das seguintes mensagens de erro em um navegador da web:

    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)

    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

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

Causa

As tabelas no mysql banco de dados estão ausentes ou corrompidas.

Resolução

  1. Conecte-se ao servidor Plesk via SSH .

  2. Pare o serviço MariaDB/MySQL:

    service mariadb stop

    service mysql stop
  3. Adicione skip-grant-tables ao my.cnf arquivo:

    3.1. Abra o my.cnf arquivo em um editor de texto. Neste exemplo, estamos usando o editor vi :

    • em distribuições baseadas em CentOS/RHEL

      vi /etc/my.cnf
    • em distribuições baseadas em Debian/Ubuntu

      vi /etc/mysql/my.cnf

    3.2. Adicione a skip-grant-tablesdiretiva na [mysqld]seção:

    [mysqld]
    skip-grant-tables

    3.3. Salve as alterações e feche o arquivo.

  4. Inicie o serviço MariaDB/MySQL:

    service mariadb start

     

    service mysql start
  5. Crie um despejo de banco de dados do mysql banco de dados:

    MYSQL_PWD=`cat /etc/psa/.psa.shadow` mysqldump -uadmin --skip-extended-insert mysql > /root/mysql_dump.`date +%F.%s`.sql

  6. Mova o mysqldiretório para /root:

    mv /var/lib/mysql/mysql/ /root
  7. Liste todos os dumps diários do Plesk disponíveis ( a pasta de dumps padrão é /var/lib/psa/dumps):

    ls -lat `cat /etc/psa/psa.conf | grep DUMP_D | grep -v "#" | awk '{print $2}'`/mysql.daily.dump*

    -rw------- 1 root root 236253 Dec 3 01:51 /var/lib/psa/dumps/mysql.daily.dump.0.gz
    -rw------- 1 root root 229653 Jul 2 01:48 /var/lib/psa/dumps/mysql.daily.dump.1.gz
    -rw------- 1 root root 222485 Apr 1 01:56 /var/lib/psa/dumps/mysql.daily.dump.2.gz
  8. Restaure o mysqlbanco de dados do despejo diário mais recente do Plesk:

    zcat /var/lib/psa/dumps/mysql.daily.dump.0.gz | sed -n '/-- Current Database: `mysql`/,/-- Current Database:*/p' | mysql -uadmin mysql
  9. Remova a skip-grant-tables diretiva que foi adicionada na etapa 3.

  10. Inicie o serviço MariaDB/MySQL:

    service mariadb restart

    service mysql restart

Esta resposta lhe foi útil?

Artigos Relacionados

MMHospedagem