it-swarm-pt.tech

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

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

14
slolife

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

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 disso, não se esqueça de iniciar o mysql novamente com a devida autorização.

15
David Schmitt

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

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

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

Depois de fazer login, 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
6
Brent

Meu usuário root não existia. Em

CREATE USER [email protected];

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 era

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 deste:

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

(e este pode e deve ser mais automatizado)

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

3
kqw

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

  1. Como não sabemos a senha atual, o servidor MySQL precisa executar ignorando/ignorando as credenciais de login atuais. Instrua o servidor MySQL a pular a tabela de concessões de acesso por:
    • Pare o servidor MySQL (se já estiver em execução).
    • Encontre seu arquivo de configuração do MySQL, my.cnf. (Para mim, foi colocado em @ /Applications/XAMPP/xamppfiles/etc. Você pode apenas 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. Vai começar com a opção skip-grant-tables.
  2. Abra Terminal e execute o comando mysql
  3. Execute o comando mysql> UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
  4. Execute o comando mysql> FLUSH PRIVILEGES;
  5. Execute o comando mysql> exit
  6. Reinicie o servidor MySQL.
0
Saurabh Hooda