Meu computador congelou e eu esqueci que estava atualizando em segundo plano, então eu reiniciei. Quando eu reiniciei tentei entrar (e se eu digitei a senha errada, ele disse que a senha incorreta), mas, em seguida, a tela ficaria em branco por um segundo e depois voltar para a tela de login. Eu inicializei no modo de recuperação e executei o gerenciador de recuperação de pacotes. Isso fez o truque e me permitiu entrar novamente. Eu corri sudo apt-get update
e sudo apt-get install
para ter certeza de que todos os pacotes foram atualizados corretamente. No entanto, o mysql não está mais funcionando (não consigo ativar o serviço). Quando tento sudo apt-get install
aqui está a mensagem de erro:
2 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Setting up mysql-server-5.5 (5.5.43-0ubuntu0.14.04.1) ...
start: Job failed to start
invoke-rc.d: initscript mysql, action "start" failed.
No apport report written because the error message indicates its a followup error from a previous failure.
dpkg: error processing package mysql-server-5.5 (--configure):
subprocess installed post-installation script returned error exit status 1
dpkg: dependency problems prevent configuration of mysql-server:
mysql-server depends on mysql-server-5.5; however:
Package mysql-server-5.5 is not configured yet.
dpkg: error processing package mysql-server (--configure):
dependency problems - leaving unconfigured
Errors were encountered while processing:
mysql-server-5.5
mysql-server
E: Sub-process /usr/bin/dpkg returned an error code (1)
Eu também tentei sudo apt-get -f install
, mas recebi a mesma mensagem de erro. Minha pergunta é como eu corrijo o problema e recupero o banco de dados, com muita cautela para ter certeza de que os bancos de dados / tabelas mysql reais não serão deletados.
Atualizar
Após esta resposta , removi o mysql e reinstalei-o.
sudo apt-get clean
sudo apt-get autoclean
sudo apt-get remove --purge mysql-client-5.5 mysql-client-core-5.5 mysql-common mysql-server mysql-server-5.5 mysql-server-core-5.5
sudo apt-get install mysql-server
A etapa final não funcionou (ela foi instalada, mas no final da instalação a senha root já estava definida e o banco de dados não iniciava). Em vez de fazer o último passo no terminal, eu tinha o webmin install mysql (que é como eu originalmente configurava o banco de dados) e o banco de dados iniciava e não parava nenhum problema. Exceto meu local do diretório do banco de dados em um segundo disco rígido em /media/D/mysql/
, não em /var/lib/mysql
e o que estava funcionando era apenas um conjunto muito mais antigo de arquivos que nunca foram excluídos de /var/lib/mysql
quando copiei para o segundo disco rígido .
Seguindo essas instruções , que originalmente usei para alterar o diretório, editei os arquivos de configuração relevantes (obviamente, eu fiz não copie os arquivos para a unidade D como eles já estão lá, eu apenas editei os arquivos de configuração). Depois de alterar o local do diretório do banco de dados, o banco de dados não será mais iniciado.
Aqui está o que está no registro de erros (o terminal apenas informa que ele não pode ser iniciado):
50514 16:50:55 [Note] Plugin 'FEDERATED' is disabled.
/usr/sbin/mysqld: Table 'mysql.plugin' doesn't exist
150514 16:50:55 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
150514 16:50:55 InnoDB: The InnoDB memory heap is disabled
150514 16:50:55 InnoDB: Mutexes and rw_locks use GCC atomic builtins
150514 16:50:55 InnoDB: Compressed tables use zlib 1.2.8
150514 16:50:55 InnoDB: Using Linux native AIO
150514 16:50:55 InnoDB: Initializing buffer pool, size = 128.0M
150514 16:50:55 InnoDB: Completed initialization of buffer pool
150514 16:50:55 InnoDB: highest supported file format is Barracuda.
150514 16:50:55 InnoDB: Waiting for the background threads to start
150514 16:50:56 InnoDB: 5.5.43 started; log sequence number 1595675
150514 16:50:56 [Note] Server hostname (bind-address): '127.0.0.1'; port: 3306
150514 16:50:56 [Note] - '127.0.0.1' resolves to '127.0.0.1';
150514 16:50:56 [Note] Server socket created on IP: '127.0.0.1'.
150514 16:50:56 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist
Eu pesquisei o erro Table 'mysql.host' doesn't exist
e encontrei esta resposta , tentei me certificar de que o mysql tinha permissões (veja abaixo ), mas isso não funcionou.
chown -R mysql /media/D/mysql
chgrp -R mysql /media/D/mysql
Uma sugestão foi ver a saída de mysqld
, que produz o seguinte erro no terminal:
150514 17:00:55 [Warning] Using unique option prefix key_buffer instead of key_buffer_size is deprecated and will be removed in a future release. Please use the full name instead.
150514 17:00:55 [Note] mysqld (mysqld 5.5.43-0ubuntu0.14.04.1) starting as process 11565 ...
150514 17:00:55 [Warning] Can't create test file /media/D/mysql/computername.lower-test
150514 17:00:55 [Warning] Can't create test file /media/D/mysql/computername.lower-test
mysqld: Can't change dir to '/media/D/mysql/' (Errcode: 13)
150514 17:00:55 [ERROR] Aborting
150514 17:00:55 [Note] mysqld: Shutdown complete
Atualização 2
Eu mudei a configuração do mysql /etc/mysql/my.cnf e ele usa key_buffer_size corretamente agora e o mysqld
não iniciará nenhum problema. sudo mysql start
, no entanto, produz o seguinte erro:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
RESOLVIDO
Tão estúpido! A localização real dos arquivos é / media / D_ / mysql não / media / D / mysql. E então, quando percebi isso, também tive que lembrar de fazer a alteração no perfil do AppArmor também. Seria muito mais fácil se a mensagem de erro dissesse que o diretório não existe !!!!