Alterando a senha do usuário root no MySQL

Algumas vezes já me deparei com a dificuldade de tentar me lembrar qual era mesmo a senha que eu havia definido para o usuário root nos servidores com MySQL… depois de algumas vezes decidi guardar esta dica em algum lugar que me facilitasse recuperar quando necessário, e lá foi ela pra minha incrível base de conhecimentos em arquivo texto indexada pelo grep ;) . Bem, como tudo evolui, a base de conhecimentos em arquivo texto transformou-se neste blog e mais uma dica fará parte dele agora (não que a solução anterior estivesse ruim, mas infelizmente não era pública).

Para alterar a senha do usuário root siga os seguintes passos:

Linux:

  1. Parar o serviço do MySQL (service mysqld stop, /etc/init.d/mysqld stop, matando o processo – conforme sua distribuição);
  2. Reiniciar o mysql com a opção –skip-grant-tables (você poderá utilizá-la ao iniciar o mysqld manuamente ou colocando-a no arquivo de init)
  3. Alterar a senha do usuário root com o comando:
    # mysqladmin -u root password 'nova_senha'
    # mysqladmin flush-privileges
    

    você pode alterar a senha também com o comando:

    # mysql -u root mysql
    mysql> UPDATE user SET Password=PASSWORD('nova_senha') WHERE User='root';
    mysql> FLUSH PRIVILEGES;
    

Windows XP (com o MySQL rodando como serviço):

  1. Entrar nos serviços do windows (Iniciar -> Executar -> services.msc);
  2. Procure pelo MySQL, clique com o botão direito sobre ele e vá em propriedades;
  3. Pare o serviço (clicando sobre o botão parar);
  4. Insira no campo “Parâmetros de inicialização” o parâmetro –skip-grant-tables e clique no botão iniciar e em seguida botão Ok;
  5. Execute o cmd (Iniciar -> Executar -> cmd) , entre no diretório de binários do MySQL (cd c:\arquivos de programas\mysql\bin (ou onde estiver instalado));
  6. Alterar a senha do usuário root com o comando:
    mysqladmin -u root password 'nova_senha'
     mysqladmin flush-privileges
    

    você pode alterar a senha também com o comando:

    mysql -u root mysql
    mysql> UPDATE user SET Password=PASSWORD('nova_senha') WHERE User='root';
    mysql> FLUSH PRIVILEGES;
    

O parâmetro –skip-grant-tables desabilita no servidor o uso do sistema de privilégios. Com isso todos os usuários terão acesso a todos os bancos de dados. Ao executar o comando Flush privileges, o servidor retorna a utilizar seu sistema de privilégios, mantendo a segurança original do serviço.

Agora se você adicionou o parâmetro –skip-grant-tables no arquivo de init, não se esqueca de remové-lo de lá, para evitar que na próxima reinicialização do serviço ele fique vulnerável. Caso seu MySQL esteja no Windows, execute os 4 primeiros passos novamente removendo o parâmetro passado na inicialização.

Update: O Artigo foi adaptado também para apresentar a troca de senhas no ambiente windows conforme sugestão do Carlos Henrique.

Posts relacionados:

24 thoughts on “Alterando a senha do usuário root no MySQL

  1. Pingback: hebertphp » Alterando a senha do usuário root no MySQL

  2. pow tem como vc me ensinar a fazer um site pq eu fiz um site no programa wamp5 mas nao sei como hospedo e mesmo hospedando o site nao está como eu quero pow tem como me ajuda pra fazer um site igual a esse ?

  3. Beleza. Funcionou direitinho. Outra coisa: No Mandriva 2009 a senha vem em branco. E quem sabe disso? Entrei lá e usei o comando de troca que você indicou e deu tudo certo. Obrigado.

  4. Pingback: Guia de referência MySQL (Quick Guide) Grátis - De-Grátis!

  5. O comando não deveria ser “UPDATE mysql.user SET Password=PASSWORD(‘nova_senha’) WHERE User=’root’;”?

    Pelo menos foi assim que funcionou aqui.

  6. Ptz cara,
    não consegui achar o mysql no services.msc para para-lo
    e consequentemente não funcionou o resto.
    oque faço?

  7. @jow o que não funcionou? percebi que no ubuntu 10.10, não consigo mais usar o mysqladmin, tive que usar o update dentro do banco, você já tentou com ele? Qual distro vc está usando?

  8. Não deu certo na troca da senha pois após os comandos:
    error 1045:access denied for user ‘oot’@localhost’

    Como faço?

  9. Olá claudia,

    pela mensagem de erro, acredito que você tenha colocado o nome do usuário errado, pois está como oot.

    revise o comando e tente novamente, qualquer coisa é só avisar

  10. po funcionou legal… nem precisou parar os serviços,colocar parametro, nada… so deu o comando direto para acessar o mysql sem senha, e depois dentro do mysql dei o comando padrao para alterar a senha….
    valeu…

  11. Que m**** cara, desse jeito a senha fica em texto puro no banco e não em MD5

  12. boa tarde,

    Alguém poderia me ajudar por favor, estou com um problema no meu site, uma mensagem de erro na página agenda, não sou expert em mysql e ali fala algo sobre senha errada, gostaria de uma ajuda sobre como resolver o problema.

    Desde já obrigado

  13. Boa tarde, por favor me ajude quero instalar uma impressora mas o sistema pede a senha root e eu não sei qual é, me dê uma dica!

  14. Gilson, vc deve estar querendo a senha do root do Linux, este é do serviço MySQL.
    Procura o administrador da máquina. Se for você o administrador vá na tela de terminal e use o sudo ‘comando’ (troque o comando para o que vc está querendo executar)

  15. Aqui não está funcionando!
    Estou seguindo exatamente o procedimento… mas após o comando:
    mysqladmin -u root password ‘nova_senha’
    Recebo o erro:
    mysqladmin: connect to server at ‘localhost’ failed
    error: ‘Access denied for user ‘root’@'localhost’ <using password: NO)'

  16. quero agradecer muitooo pela ajuda-la com o MySQL 5.5…

    obrigadooo..

Deixe um Comentário

O seu endereço de email não será publicado Campos obrigatórios são marcados *

*

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>