Resetando a Senha do Root no MySQL
Hoje precisei acessar um servidor MySQL recém instalado no qual eu não sabia a senha do usuário root.
Mas eu tinha acesso de super-usuário no Linux. Então, decidi criar uma nova senha.
A maneira mais prática de realizar tal processo é utilizando o script mysqld_safe. Ele possui o parâmetro --skip-grant-tables
, que possibilita logar sem inserir nenhuma senha. Para rodar esse script é necessário que exista o diretório /var/run/mysqld
com propriedade do usuário do MySQL.
Antes de rodar o mysqld_safe, você pode conferir se o diretório necessário existe:
/var/run/mysqld
Caso não exista, crie-o e defina a propriedade:
sudo mkdir -p /var/run/mysqld
sudo chown mysql:mysql /var/run/mysqld
Feito isso, abra outro terminal, certifique-se que o MySQL está desligado e execute o mysqld_safe para rodar em segundo plano:
sudo systemctl stop mysql.service
sudo mysqld_safe --skip-grant-tables &
Agora já será possível entrar apenas com mysql -uroot
. Sem necessidade da senha.
Estando no prompt do MySQL, use a tabela mysql
e defina sua nova senha:
USE mysql;
-- O nome da coluna é "Password" se a versão do seu MySQL é menor que 5.7
UPDATE user SET authentication_string=PASSWORD('nova-senha') WHERE user='root';
FLUSH PRIVILEGES;
EXIT
Com a nova senha definida, mate o processo do mysqld_safe com um Ctrl + C
e inicie o MySQL:
sudo systemctl start mysql.service
À partir de então você poderá acessar o MySQL normalmente, com mysql -uroot -p
.
Feito.
Fontes
O que acha de me comprar um café? Comprar um café