O Manual de Referência do MySQL tem etapas detalhadas sobre como redefinir a senha do root, que são as seguintes:
O procedimento no Windows:
- Faça login no sistema Windows em que o MySQL está sendo executado como administrador.
- Pare o servidor MySQL se estiver em execução. Para um servidor que está sendo executado como um serviço do Windows, acesse o gerenciador de serviços:
Menu Iniciar -> Painel de Controle -> Ferramentas Administrativas -> Serviços
Em seguida, encontre o serviço MySQL na lista e pare-o.
Se o seu servidor não estiver sendo executado como um serviço, talvez seja necessário usar o Gerenciador de Tarefas para forçá-lo a parar. - Crie um arquivo de texto e coloque os seguintes comandos dentro dele em uma única linha:
UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root'; FLUSH PRIVILEGES;
Save the file with any name. For this example the file will be C:\mysql-init.txt.SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPassword');
- Open a console window to get to the DOS command prompt: Start Menu -> Run -> cmd
- If MySQL is installed in C:\mysql. If MySQL is installed in another location, adjust the following commands accordingly.
At the DOS command prompt, execute this command:
C:\> C:\mysql\bin\mysqld-nt --init-file=C:\mysql-init.txt
O conteúdo do arquivo nomeado pela opção --init-file é executado na inicialização do servidor, alterando a senha do root. Depois que o servidor for iniciado com sucesso, você deve excluir C:\mysql-init.txt.
Se você instalou o MySQL usando o MySQL Installation Wizard, pode ser necessário especificar uma opção --defaults-file:
C:\> "C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqld-nt.exe" --defaults-file="C:\Program Files\MySQL\MySQL Server 5.0\my.ini" --init-file=C:\mysql-init.txt
A configuração --defaults-file apropriada pode ser encontrada usando o Gerenciador de Serviços:
Menu Iniciar -> Painel de Controle -> Ferramentas Administrativas -> Serviços
Encontre o serviço MySQL na lista, clique com o botão direito nele e escolha a opção Propriedades. O campo Caminho para executável contém a configuração --defaults-file. Certifique-se de fornecer o argumento --init-file com o caminho completo do sistema para o arquivo, independentemente do seu diretório de trabalho atual - Pare o servidor MySQL e reinicie-o no modo normal novamente. Se o servidor MySQL for executado como um serviço, inicie-o na janela Serviços do Windows. Se você iniciar o servidor manualmente, use qualquer comando que você normalmente usa.
- Conecte-se ao servidor MySQL usando a nova senha. Lembre-se também de excluir o arquivo mysql-init.txt quando terminar.
Para ambiente Unix e Linux, o procedimento para redefinir a senha de root é o seguinte:
- Faça logon no sistema Unix como usuário root do Unix ou como o mesmo usuário que o servidor mysqld executa.
- Localize o arquivo .pid que contém o ID do processo do servidor. A localização e o nome exatos desse arquivo dependem de sua distribuição, nome de host e configuração. Locais comuns são /var/lib/mysql/, /var/run/mysqld/ e /usr/local/mysql/data/. Geralmente, o nome do arquivo tem a extensão .pid e começa com mysqld ou com o nome do host do sistema.
Pare o servidor MySQL enviando um kill normal (não kill -9) para o processo mysqld, usando o nome do caminho do arquivo .pid no seguinte comando:
shell> kill `cat /mysql-data-directory/host_name.pid`
Observe o uso de acentos graves em vez de aspas com o comando cat; isso faz com que a saída de cat seja substituída no comando kill. - Crie um arquivo de texto e coloque o seguinte comando dentro dele em uma única linha:
UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root'; FLUSH PRIVILEGES;
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPassword');
Salve o arquivo com qualquer nome. Para este exemplo, o arquivo será ~/mysql-init. - Reinicie o servidor MySQL com a opção especial --init-file=~/mysql-init:
shell> mysqld_safe --init-file=~/mysql-init &
O conteúdo do arquivo init é executado na inicialização do servidor, alterando a senha do root. Depois que o servidor for iniciado com sucesso, você deve excluir ~/mysql-init. - Reinicie o servidor normalmente. Conecte-se ao servidor MySQL usando a nova senha.
Alternativamente, em qualquer plataforma, o cliente mysql pode ser usado para definir a nova senha, embora seja uma maneira menos segura de redefinir a senha (instruções detalhadas aqui):
- Pare o mysqld e reinicie-o com as opções --skip-grant-tables --user=root (os usuários do Windows omitem a parte --user=root).
- Conecte-se ao servidor mysqld com este comando:
shell> mysql -u root
- Emita as seguintes instruções no cliente mysql:
mysql> UPDATE mysql.user SET Password=PASSWORD('newpwd') -> WHERE User='root'; mysql> FLUSH PRIVILEGES;
Substitua 'newpwd' pela senha de root real que você deseja usar. - Você deve conseguir se conectar usando a nova senha.