Não é possível iniciar o MySQL

1

Eu usei este comando do shell para reparar todos os bancos de dados

mysqlcheck -u root -p --auto-repair --check --optimize --all-databases

e depois disso eu reiniciei o servidor

quando ele voltou vivo, tentei abrir o fórum do vBulletin, mas recordei a mensagem de erro do banco de dados.

e também tentei abrir o phpMyAdmin mas recebi este erro:

#2002 - The server is not responding (or the local MySQL server's socket is not correctly configured).

Eu verifiquei a lista de serviços e descobri que o serviço MySQL não está listado, então tentei iniciá-lo a partir do shell Eu recebi este erro:

Starting MySQL.Manager of pid-file quit without updating fi[FAILED]

alguém poderia me ajudar nisso?

obrigado antecipadamente.

atualização

Eu encontrei estas linhas no arquivo de log

101101 01:36:01 mysqld started
101101 1:36:01 [Warning] Asked for 196608 thread stack, but got 126976
101101 1:36:01 [ERROR] /usr/sbin/mysqld: Table './mysql/user' is marked as crashed and last (automatic?) repair failed
101101 1:36:01 [ERROR] /usr/sbin/mysqld: Table './mysql/user' is marked as crashed and last (automatic?) repair failed
101101 1:36:01 [ERROR] Fatal error: Can't open and lock privilege tables: Table './mysql/user' is marked as crashed and last (automatic?) repair failed
101101 01:36:01 mysqld ended

O que devo fazer então?

    
por Mohamed Nour El-Din 01.11.2010 / 05:59

4 respostas

3

Isso ocorre quando o mysqld não está adequadamente encerrado. Basicamente, o arquivo pid - um arquivo que contém o id do processo atualmente em execução - existe para detectar se o processo está ou não sendo executado ativamente. Quando o sistema está fora de sintonia - ou seja, ele encontrou o pid mas não consegue encontrar o processo, o que significa que o servidor não foi parado corretamente - requer intervenção manual.

Simplesmente rm /var/run/mysqld.pid e você deve estar bem.

Andrew

ATUALIZAÇÃO: Com base nos seus arquivos de registro recentes (e no fato de que reparos automáticos falharam), aqui está uma ótimo post sobre métodos adicionais de reparo . Além disso, verifique se você tem espaço suficiente em disco no servidor.

    
por 01.11.2010 / 08:16
3

Tente iniciar o mysqld com --skip-grant-tables para que ele não tente carregar a tabela de usuários (travada).

/etc/init.d/mysqld start --skip-grant-tables

faça o login no mysql

mysql

tente o comando de reparo na tabela de usuários

use mysql; 
REPAIR TABLE user;

Não tenho certeza se essa sintaxe está 100% correta.

    
por 01.11.2010 / 09:39
1

Eu acho que você precisa mysqlrepair:

mysqlrepair -r tablename

(Apenas percebi que isso é o mesmo que mysqlcheck.)

O que você precisa é de um reparo explícito em vez de um autorepair.

    
por 01.11.2010 / 09:43
1

Problema resolvido:)

Obrigado cstamas, Resorath, Andrew & Gennady, obrigado por sua ajuda:)

Eu tentei isso com shell e funcionou bem:

service mysql stop 
mkdir /home/tmp
cd /var/lib/mysql
myisamchk --tmpdir=/home/tmp -r */*.MYI
service mysql start
    
por 01.11.2010 / 10:44