Você pode recuperar ou definir a senha do root sem conhecer o atual, iniciando o mysql sem carregar as tabelas de permissões.
Por favor, note o $
nos comandos. Isso está especificando o prompt do terminal que você vê ao digitar o comando. Está mostrando que é uma linha de texto, mas o comando do terminal é digitado. O prefixo " mysql>
" também é um prompt. Esse é o prompt que você recebe ao executar mysql interativamente.
Este é o cli (linha de comando) para fazer isso:
(Certifique-se de parar o servidor atual antes de executar as etapas. Apenas um servidor pode ser executado por vez.)
$ sudo mkdir /var/run/mysqld; sudo chown mysql /var/run/mysqld
$ sudo mysqld_safe --skip-grant-tables&
Agora você pode logar como root sem uma senha e executar todos os comandos, como neste caso, definir a senha root como root.
$ sudo mysql --user=root mysql
Esta é a senha root definida que você irá executar dentro do mysql se você tiver o MySQL 5.6 ou abaixo:
mysql> update user set Password=PASSWORD('new-password') where user='root';
flush privileges;
No MySQL 5.7 ou acima
mysql> update user set authentication_string=PASSWORD('new-password') where user='root';
flush privileges;
De lá, saia do mysql (mata o msqld em execução) e comece normalmente.
Notas sobre como iniciar e parar o serviço mysql:
Pare o mysql:
$ sudo service mysql stop
Inicie o mysql (normal):
$ sudo service mysql start
Mate a sessão temporária do modo de segurança mysql:
$ sudo mysqladmin shutdown