Como o MySQL autoriza o usuário root da máquina?

0

Estou tentando executar mysqlcheck . Sua falha com:

$ sudo su -
# mysqlcheck --auto-repair --all-databases
mysqlcheck: Got error: 1045: Access denied for user 'root'@'localhost' (using password: NO) when trying to connect

Outras perguntas e respostas dizem para modificar ou redefinir as senhas do MySQL. Eu realmente não quero fazer isso porque não sei o impacto. Se houver scripts usando, eu os quebrarei. No mínimo, eu tenho que compartilhá-lo com outros dois administradores de sistemas [meio período], então é principalmente uma dor.

O que eu gostaria é que o MySQL reconheça o usuário root da máquina (uid 0) e atribua a ele todos os privilégios concedidos ao root.

Estou trabalhando no CentOS 7.2. Como eu tenho o MySQL para o usuário root?

Aqui estão algumas perguntas relacionadas. Todos eles levam de volta a modificar a senha.

por jww 02.04.2016 / 02:51

2 respostas

1

No MySQL 5.5+, você pode usar o plugin de autenticação auth_socket para isso:

CREATE USER 'root'@'localhost' IDENTIFIED WITH auth_socket;

O MariaDB 5.2.0+ tem um plug-in unix_socket semelhante - até onde eu sei , está ativo por padrão:

INSTALL PLUGIN unix_socket SONAME 'auth_socket';
CREATE USER root IDENTIFIED VIA unix_socket;

Da mesma forma, o PostgreSQL possui o método de autenticação "local" em seu pg_hba.conf e o habilita por padrão.

Em Unixes, o mecanismo geral é geralmente chamado de "peercred" , como em SO_PEERCRED . (O equivalente do Windows é geralmente chamado de "Autenticação nativa do Windows".)

    
por 02.04.2016 / 09:56
0

Com base no que você disse, vou supor que seu usuário do MySQL 'root'@'localhost' tem uma senha desde que você mencionou o compartilhamento com outras pessoas. E por causa disso eu também estou supondo que você ainda conhece essa senha.

Agora, vamos dar uma olhada no que a mensagem de erro diz:

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

Então, o que estou vendo aqui é que você está tentando se conectar ao MySQL sem fornecer uma senha enquanto o usuário mysql tem uma senha. Obviamente isso não funciona.

Aposto que mysqlcheck --auto-repair --all-databases -p funcionará. Ele pedirá a senha e você deve estar pronto.

Tendo dito tudo que eu aconselho strongmente contra o uso da conta de root do MySQL para outras coisas além de administrar o servidor MySQl (desde que você mencionou If there are any scripts using it ), apenas faça outro usuário MySQL para aquele script com as permissões apropriadas. E se você realmente precisar redefinir sua senha de root, dizer a outros dois colegas não deveria ser um problema assim, certo? Se for, eu avaliaria os métodos de comunicação da sua empresa ...

    
por 02.04.2016 / 13:58