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.