quarta-feira, 27 de setembro de 2023

Senha de Root do MySQL no Linux

Começo este post informando que decidi fazer a instalação do MySQL em minha máquina.

Estou usando o KDE Neon 5.27.8

Realizei a instalação do MySQL do próprio repositório através do comando:

sudo pkcon install mysql-server

Durante a instalação não houve pedido para informar a senha de root do mysql.

Instalação terminada, ainda no terminal digitei:

sudo mysql

Acessando assim o prompt do mysql.

Mas eu queria informar uma senha para o usuário root. Dei um quit do mysql e novamente no terminal do sistema, utilizei o seguinte comando:

sudo mysql_secure_installation

Serão apresentadas algumas opções de configuração do tipo sim ou não (y ou n).

A primeira é o nível da política de senha. São 3 opções: LOW, MEDIUM, STRONG (não irei me extender nas opções, pois são todas bem explicadas no processo).

Após selecionar o nível, deveria vir a opção de informar uma senha para o root, porém recebi a seguinte mensagem informando que essa parte será pulada.

"Skipping password set for root as authentication with auth_socket is used by default."

A mensagem indica que a configuração de autenticação do usuário root está usando o método "auth_socket" por padrão e, portanto, não é necessário definir uma senha para esse usuário.

O "auth_socket" é um mecanismo de autenticação do MySQL que permite que o usuário se autentique com base no usuário do sistema operacional. Isso significa que, se você estiver logado como um usuário do sistema operacional com privilégios de root ou usando o comando "sudo", poderá se conectar ao MySQL como usuário root sem fornecer uma senha.

Neste caso, para solucionar o problema de dar uma senha ao root a solução foi acessar o mysql através do sudo e uma vez no prompt do mysql, utilizar o comando:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'sua_senha_aqui';

Feito isto, basta sair e tentar autenticar-se com a senha que acabou de cadastrar para o root.

Caso queira retornar a autenticar-se como root utilizando o usuário admin do sistema operacional, utilize o comando:

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

É sempre interessante, por questões de segurança, criar um usuário para utilizar o banco e não ficar utilizando o root.

Siga estes passos dentro do mysql:


create user 'nome_usuário'@'localhost' identified by 'sua_senha';
grant all privileges on *.* to 'nome_usuário'@'localhost' with grant option;
flush privileges;

É isso!

Espero ter ajudado.
Abraço a todos