Como redefinir ou recuperar a senha da conta de administrador do MySQL?

14

Eu tenho um banco de dados MySQL que eu "herdei" e não recebi as credenciais de administrador. No entanto, tenho acesso à caixa em que é executada. Existe uma maneira de recuperar as credenciais de administrador ou criar novas credenciais?

    
por slolife 04.05.2009 / 22:45

4 respostas

15

Leia e execute o capítulo sobre como redefinir a senha de root no MySQL Manual de Referência.

Este procedimento inicia o daemon mysql sem autorização, permitindo que você se conecte sem fornecer credenciais. Neste modo, você pode se conectar normalmente e redefinir senhas e concessões. Depois, não esqueça de iniciar o mysql novamente com a devida autorização.

    
por 04.05.2009 / 22:50
6

Se esta for uma caixa Debian / Ubuntu, existe uma conta especial equivalente à raiz chamada debian-sys-maint . Você pode ler a senha em /etc/mysql/debian.cnf

Usando essa senha você pode logar no mysql como debian-sys-maint usando:

mysql --defaults-file=/etc/mysql/debian.cnf mysql

Uma vez que você está logado, faça o seguinte:

update user set password=password('<new password>') where user='root';
flush privileges;
quit;
O

root agora deve estar acessível usando sua nova senha:

mysql -uroot -p
    
por 05.05.2009 / 00:49
3

Meu usuário root não existia. Em

CREATE USER root@localhost;

Eu tenho

ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

A solução foi para

mysqld_safe  --skip-grant-tables &
mysql
INSERT INTO user (Host,User,Password) VALUES ('localhost', 'root', 'changethispassword');
UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';
FLUSH PRIVILEGES;

Depois disso, adicionei todos os privs um por um com uma pequena ajuda:

mysql mysql -e "SELECT * FROM user WHERE User='root'\G"|grep N

(e este poderia e deveria ser mais automatizado)

Nota: encontrar o número correto de 'Y's no INSERT é um PITA.

    
por 14.08.2013 / 20:48
0

Como as etapas do Manual de Referência do MySQL não são muito claras, eu sou tentando responder aqui em linguagem mais fácil. (esta resposta é relevante para os usuários do MacBook OSX):

  1. Como não sabemos a senha atual, o servidor MySQL precisa ser executado ignorando / ignorando as credenciais de login atuais. Instrua o servidor MySQL a ignorar a tabela de concessões de acesso:
    • Pare seu servidor MySQL (se já estiver em execução).
    • Encontre seu arquivo de configuração do MySQL, my.cnf . (Para mim, foi colocado @ /Applications/XAMPP/xamppfiles/etc . Você pode pesquisar se não conseguir encontrá-lo).
    • Abra o arquivo my.cnf em qualquer editor de texto.
    • Adicione "skip-grant-tables" (sem aspas) no final da seção [mysqld] e salve o arquivo.
    • Agora inicie seu servidor MySQL. Começará com a opção skip-grant-tables .
  2. Abra Terminal e execute o comando mysql
  3. Executar o comando mysql> UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
  4. Executar o comando mysql> FLUSH PRIVILEGES;
  5. Executar o comando mysql> exit
  6. Reinicie o servidor MySQL.
por 22.07.2014 / 18:14