MySQL rejeita conexões com auth_socket

3

Recentemente, substituí uma instalação do MariaDB em um servidor CentOS 7 com o MySQL Community Edition 5.7. A instalação anterior foi configurada para permitir autenticação de ponto de soquete para o usuário raiz e tentei replicar a mesma configuração com a nova instalação.

Depois de reinstalar o MySQL e reinicializar o diretório do banco de dados ( /var/lib/mysql ), eu ativei o auth_socket plugin em /etc/my.cnf :

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

symbolic-links=0

log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

plugin-load-add=auth_socket.so

Em seguida, conectei-me ao MySQL usando a senha raiz temporária gerada automaticamente e defini o usuário root para usar auth_socket :

ALTER USER 'root'@'localhost' IDENTIFIED WITH auth_socket;
FLUSH PRIVILEGES;

Depois de fazer essa alteração, quando tento conectar-me ao banco de dados com sudo mysql -u root , recebo um erro de "acesso negado":

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

Eu também não consigo fazer login com a senha temporária que funcionou antes de atualizar o usuário.

Existe algum passo sutil de configuração que eu poderia estar perdendo?

    
por blm768 07.04.2018 / 01:57

2 respostas

5

Supondo que você tenha reiniciado o servidor após as alterações no arquivo cnf, você pode tentar adicionar a segunda linha no .cnf , para que o servidor falhe se o plug-in não for inicializado com êxito:

plugin-load-add=auth_socket.so
auth_socket=FORCE_PLUS_PERMANENT

Dessa forma, você pode reduzir o problema. Ou você poderia tentar registrar o plugin em tempo de execução a partir do mysql:

INSTALL PLUGIN auth_socket SONAME 'auth_socket.so';
    
por 12.10.2018 / 12:24
2

Não posso comentar a resposta acima, portanto, aqui está minha resposta "própria":

INSTALL PLUGIN auth_socket SONAME 'auth_socket.so';

não funciona, pelo menos não com MariaDB (5.5) no CentOS 7. Para Mariadb, leia:

INSTALL PLUGIN unix_socket SONAME 'auth_socket.so'; 

(veja a documentação aqui link

Depois, faça um

update user set plugin = 'unix_socket' where user='root'; 
FLUSH PRIVILEGES;

reiniciar o mariadb, e o login pode ser sem senha para o usuário root (por exemplo, para backups do crontab)

    
por 14.11.2018 / 16:09

Tags