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

Recentemente, fui fazer uma pequena alteração no meu banco de dados, para mudar as permissões de um determinado usuário e acabei perdendo o acesso ao banco.

Análise do problema:

O problema aconteceu depois da repetição de um simples comando: GRANT SELECT, INSERT, UPDATE ON dbsystemmyimei.* TO usermyimeico;

Depois de executar  o comando, mencionado acima, comecei a receber uma mensagem informando a tabela de usuário estaria corrompida e daí pra frente eu não conseguia fazer mais nenhuma alteração no meu banco de dados e quando tentava entra no mysql, recebia a seguinte mensagem de erro: "ERROR 1524 (HY000): Plugin 'unix_socket' is not loaded"

Pesquisando sobre  unix_socket na internet descobrimos que ele é um plug-in de autenticação que permite usar as credenciais do sistema operacional para se conectar ao MySQL/MariaDB. Ele faz isso por meio do arquivo de soquete local que é definido pela variável do sistema de soquete.

Mais detalhes em mariadb.

Host: Sistema: Ubuntu 18.04.2 LTS - 64 bits
CPU: Intel® Core™ i5-4460 CPU @ 3.20GHz × 4 
Memória: 8GB 


Solução

Antes de resolvermos esse problema, será preciso fazer o backup da pasta mysql porque, por algum motivo, ainda desconhecido, o mysql.sock é deletado toda vez que o serviço mysql é parado e o mysqld_safe não pode criá-lo novamente. Por isso, para contornarmos esse problema, é preciso fazermos o backup da pasta sock e restaurar antes de iniciar o mysqld_safe.

Passo a passo:

Essa solução pode ser aplicada no mysql ou mariadb

1. Se o mysql ou mariadb estiver parado, inicia com o seguinte comando:

sudo service mysql start

2. Navegue para a pasta /var/run
cd /var/run

3. Agora faça o backup :
sudo cp -rp ./mysqld ./mysqld.bak

4. Pare o serviço mysql
sudo service mysql stop

5. Agora vamos restaurar o backup
sudo mv ./mysqld.bak ./mysqld

6. Inicie o mysql no modo seguro
sudo mysqld_safe --skip-grant-tables --skip-networking &

7 . Em seguida, efetue login no mysql como root:
mysql -u root

8. Confira se o plugin de autenticação está configurado para o usuário root:
select Host,User,plugin from mysql.user where User='root';

Você pode ver que ele está usando o plug-in unix_socket



9. Para mudar para o plug-in mysql_native_password, execute o seguinte comando:
update mysql.user set plugin='mysql_native_password';

10. Agora é só sair do mysql modo segurança:
quit;

11. Pare o modo segurança
sudo kill -9 $(pgrep mysql)

12. Inicie o mysql ou mariadb, novamente
sudo systemctl start mysql

13. Agora é só fazer o login com sua senha normal:
mysql -u root -p

Problema resolvido!

Vide o passo a passo em vídeo


Comentários

LEIA-ME

Criar ferramentas e scripts que facilitam seu trabalho no dia a dia, solucionar problemas, documentar tudo e criar o passo a passo de como resolver, é uma tarefa que requer tempo e disposição. Por esse motivo, precisamos de sua contribuição.


Apesar de não ser obrigatória, a sua doação é muito importante para continuarmos criando ferramentas, scripts e procedimentos!
Com sua contribuição manteremos o funcionamento e desenvolvimento dessas e outras soluções.