Ubuntu 15.10 erro mysql 1524 - unix_socket


51

No Ubuntu 15.10, em um ponto (talvez após a instalação e remoção do mariadb), o mysql não conseguiu operar. As tarefas estão ativadas, mas o servidor está inoperante.

Ao comando:

mysql -u root -p

o sistema responde como:

mysql "ERROR 1524 (HY000): Plugin 'unix_socket' is not loaded"

Não há como fazer login, nenhum plug-in encontrado, nenhum erro nos arquivos de configuração (tudo por padrão).

Como voltar ao controle e executar o servidor mysql?


Eu não estou familiarizado com este erro específico, mas veja esta discussão: lists.launchpad.net/maria-developers/msg08177.html
Jos

@ Jos: essa discussão, talvez para uma situação semelhante, não oferece uma solução. Pesquisei bastante no Google, mas não encontrei uma solução completa exposta. Enfim, eu postei uma resposta de trabalho.
Hydra Starmaster 03/12/2015

Sobre o motivo da mensagem de erro: O plug-in unix_socket faz parte do MariaDB (não o MySQL) e precisa ser carregado para que as subvenções que o utilizam funcionem: mariadb.com/kb/en/library/authentication-plugin-unix-socket
precisa saber é o seguinte

Respostas:


94

O "unix_socket" foi chamado pelo processo de autenticação do mysql (talvez relacionado a uma migração parcial do banco de dados para o mariadb, agora removida). Para recuperar todas as coisas, vá su:

sudo su

então siga:

/etc/init.d/mysql stop
mysqld_safe --skip-grant-tables &
mysql -uroot

Isto irá parar completamente o mysql, ignorar a autenticação do usuário (nenhuma senha necessária) e conectar-se ao mysql com o usuário "root".

Agora, no console do mysql, vá usando o banco de dados administrativo do mysql:

use mysql;

Para redefinir a senha root para mynewpassword (altere- a conforme desejado ), apenas para ter certeza:

update user set password=PASSWORD("mynewpassword") where User='root';

E este substituirá o método de autenticação, removerá a solicitação unix_socket (e tudo mais), restaurando um método de senha normal e funcional:

update user set plugin="mysql_native_password";

Saia do console do mysql:

quit;

Pare e inicie tudo relacionado ao mysql:

/etc/init.d/mysql stop
kill -9 $(pgrep mysql)
/etc/init.d/mysql start

Não se esqueça exitdo modo su.

Agora, o servidor mySQL está em funcionamento. Você pode fazer o login com root:

mysql -u root -p

ou o que você desejar. O uso da senha está operacional.

É isso aí.


Meu mysqld_safenão tem opção como --skip-grant-tables..o que dá?
heemayl

Estou no mysqld 5.6.27-0ubuntu1. Você deve encontrar essa opção olhando para:mysqld --verbose --help
Hydra Starmaster

2
Isso me fez ir. Com algumas diferenças em vez das mysqld_safequais reclamou o argumento - skip-grant-tables não existia, usei mysqld. No entanto, continuava reclamando que não era possível criar os arquivos de soquete /var/run/mysqld/. Eu verifiquei a configuração do apparmor e ela tinha as permissões adequadas. Para corrigir isso eu tinha que mkdir /var/run/mysqld/e, em seguida, dar permissões completamente abertos: chmod -R 777 /var/run/mysqld/. Finalmente, eu poderia finalmente iniciar o daemon e alterar o plugin para 'mysql_native_password'.
Dennmat # 12/16

11
Minha tabela de usuários não possui um campo de senha (Ubuntu 16 mysql 5.7.13). Eu usei este SQL: UPDATE mysql.user SET authentication_string = PASSWORD ('foobar123'), password_expired = 'N' WHERE Usuário = 'root' AND Host = 'localhost';
Anthony Scaife

As instruções aqui são concisas e me ajudaram a resolver o problema. Obrigado!
Eduardo B.

11

Aqui estão os meus passos para fazer isso:

/etc/init.d/mysql stop
sudo killall mysqld_safe
sudo killall mysqld
sudo mysqld_safe --skip-grant-tables &
mysql -u root
use mysql;
update user set password=PASSWORD("mynewpassword") where User='root';
update user set plugin="mysql_native_password";
quit;
/etc/init.d/mysql stop
sudo kill -9 $(pgrep mysql)
/etc/init.d/mysql start

11
Agora, após "mysql -u root", recebo: ERRO 1524 (HY000): O 'root' do plug-in não está carregado
dxvargas 28/16

Parece que você misturou as duas consultas UPDATE. Você configurou plugin = "root" por acidente?
Adam Plocher
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.