Melhor maneira de recuperar o mysql de um “chmod -R 777 /” com bancos de dados intactos

1

Pergunta:
Qual é a melhor maneira de recuperar mysql (ou pior caso: migrar para longe) de um "chmod -R 777 /" com bancos de dados intactos?

Sistema:
Ubuntu 12.04 LTS
MySQL 5.5.24
Servidor de nuvem do Amazon EC2 de 64 bits.

Histórico: Tentativa de recuperar (ou pelo menos recuperar dados de) um sistema que fez isso:

    chmod -R 777 /

Não há motivo para se preocupar com o porquê. Foi um gerente com muito acesso e pouca experiência que gosta de nadar em águas profundas. Foi um puro acidente da sua parte, não na verdade, significando entrar quando ele fez.

Eu recuperei muito do sistema, mas estou realmente preocupado em fazer o mysql funcionar novamente. Já trabalhei em páginas como:

Já fez isso:

    sudo chmod 644 my.cnf
    chown mysql:mysql my.cnf

Em que ponto tentar iniciar o mysql:

    sudo service mysql start

Produz essa saída no syslog:

    Apr 12 20:51:42 ip-10-10-25-143 kernel: [18632541.774742] type=1400 audit(1365799902.306:41): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/mysqld" pid=18210 comm="apparmor_parser"
    Apr 12 20:51:42 ip-10-10-25-143 kernel: [18632541.964496] init: mysql main process (18214) terminated with status 1
    Apr 12 20:51:42 ip-10-10-25-143 kernel: [18632541.964542] init: mysql main process ended, respawning
    Apr 12 20:51:43 ip-10-10-25-143 kernel: [18632542.959796] init: mysql post-start process (18215) terminated with status 1
    Apr 12 20:51:43 ip-10-10-25-143 kernel: [18632543.002041] type=1400 audit(1365799903.534:42): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/mysqld" pid=18238 comm="apparmor_parser"
    Apr 12 20:51:43 ip-10-10-25-143 kernel: [18632543.098490] init: mysql main process (18242) terminated with status 1
    Apr 12 20:51:43 ip-10-10-25-143 kernel: [18632543.098536] init: mysql main process ended, respawning
    Apr 12 20:51:43 ip-10-10-25-143 kernel: [18632543.140706] init: mysql post-start process (18244) terminated with status 1
    Apr 12 20:51:43 ip-10-10-25-143 kernel: [18632543.158681] type=1400 audit(1365799903.690:43): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/mysqld" pid=18258 comm="apparmor_parser"
    Apr 12 20:51:43 ip-10-10-25-143 kernel: [18632543.285087] init: mysql main process (18262) terminated with status 1
    Apr 12 20:51:43 ip-10-10-25-143 kernel: [18632543.285133] init: mysql respawning too fast, stopped

O que eu li sobre isso é que o mysql está terminando com um status 1, e ele faz um loop algumas vezes tentando iniciar e é impedido de fazer isso depois de muitas tentativas. Analisei o status 1, mas não encontrei soluções que pareçam aplicáveis.

    
por robertb556 12.04.2013 / 23:13

2 respostas

2
  1. Crie uma nova instância de VM com a mesma versão do sistema operacional e a versão do MySQL.
  2. Inicie o MySQL na nova VM - ele deve criar o diretório de dados do MySQL sem bancos de dados, mas com permissões corretas - em /var/lib/mysql .
  3. Pare o MySQL na nova VM.
  4. Copie /var/lib/mysql na nova VM para /var/lib/mysql.empty .
  5. Copie /var/lib/mysql da VM antiga para /var/lib/mysql na nova VM.
  6. Defina manualmente a permissão em todos os arquivos e diretórios em /var/lib/mysql com base nas permissões em /var/lib/mysql.empty .
  7. Uma breve oração a uma divindade de escolha não faria mal agora.
  8. Inicie o MySQL na nova VM.
  9. Eu recomendaria despejar todos os dados com mysqldump -A , recriando um novo diretório de dados mysql vazio e importando esses dados de volta apenas por precaução.
  10. Quando tiver certeza de que ele funciona e todos os seus dados estiverem intactos, desligue a VM antiga e arquive a imagem do disco em algum lugar. É muito menos trabalho e muito mais seguro configurar um novo servidor do que tentar se recuperar disso.
por 13.04.2013 / 21:20
1

Reinstale o sistema e restaure a partir do backup.

    
por 13.04.2013 / 01:45