Error Atualizando o pacote MYSQL

2

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 !!!!

    
por Michael 14.05.2015 / 23:09

1 resposta

0

Verifique se my.cnf não tem nenhuma opção que tenha sido preterida. Eu tive um problema semelhante porque eu tinha default-character-set listado sob [mysqld] , mas na versão mais nova do mysql isso tinha sido renomeado para character_set_server . No entanto, mysql muito inutilmente, deixe-me saber disso simplesmente pendurado ao tentar iniciar o serviço. E o gerenciador de pacotes geralmente tentará parar e / ou iniciar o serviço ao instalar uma nova versão.

Para verificar, tente executar mysqld sozinho. Se houver problemas de configuração, ele deve dizê-lo e morrer imediatamente.

    
por Brian 14.05.2015 / 23:43