Por que não consigo parar o serviço MySQL no Debian?

11

Eu apenas tentei atualizar do debian squeeze para o unstable substituindo 'squeeze' por 'unstable' no /etc/apt/sources.list. A atualização ocorreu sem problemas, exceto no MySQL, que falhou porque não conseguiu parar o MySQL.

/etc/init.d/mysql stopsimplesmente retorna que falhou, mas se eu tentar obter o status, /etc/init.d/mysql statusele me dá este erro:

me@debian:~$ sudo /etc/init.d/mysql status
/usr/bin/mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)'

O MySQL está funcionando bem, e verifiquei as permissões para debian-sys-maint no phpmyadmin e é permitido fazer tudo, mas apenas conectar-me localhost.

anon
fonte

Respostas:

6

Tente o seguinte:

  1. sudo cat /etc/mysql/debian.cnfe procure a senha listada nas seções [client]e[mysql_upgrade]

  2. mysql -u root -p password sendo a senha root original do MySQL

  3. GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY '*the password obtained from step 1*';

  4. /etc/init.d/mysql restart

Essa é a solução e esse é o raciocínio por trás disso, se você estiver interessado.

Kez
fonte
Como mencionado abaixo, isso deve serGRANT ALL PRIVILEGES ON *.*
Dave
2

Uma atualização para a resposta. Na etapa 3, eu tive que usar

GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY 'the password obtained from step 1';

Existem asteriscos no período após "ON". Trabalhado para o MySql 5.1

Frank
fonte
1

O Manual de Referência do MySQL diz que você pode fazer isso:

  1. Faça logon no seu sistema como o usuário Unix em que o mysqldservidor executa (por exemplo mysql).
  2. Localize o .pidarquivo que contém o ID do processo do servidor. A localização exata e o nome desse arquivo dependem da sua distribuição, nome do host e configuração. Os locais mais comuns são /var/lib/mysql/, /var/run/mysqld/e /usr/local/mysql/data/. Geralmente, o nome do arquivo tem uma extensão .pide começa com mysqldo nome do host ou do seu sistema.

Você pode parar o servidor MySQL enviando um kill normal (não kill -9) para o processo mysqld, usando o nome do caminho do arquivo .pid no seguinte comando:

    kill `cat /mysql-data-directory/host_name.pid`

Esta parte: cat /mysql-data-directory/host_name.pidretorna o conteúdo do arquivo, que é o ID do processo.

Nabil Kadimi
fonte