Pergunta

Perdi meu nome de usuário e senha do MySQL.Como faço para recuperá-lo?

Foi útil?

Solução

Pare o processo MySQL.

Inicie o processo MySQL com a opção --skip-grant-tables.

Inicie o cliente do console MySQL com a opção -u root.

Liste todos os usuários;

SELECT * FROM mysql.user;

Redefinir senha;

UPDATE mysql.user SET Password=PASSWORD('[password]') WHERE User='[username]';

Mas NÃO ESQUEÇA para

Pare o processo MySQL

Inicie o processo MySQL normalmente (ou seja,sem a opção --skip-grant-tables)

quando tiver terminado.Caso contrário, a segurança do seu banco de dados poderá ser comprometida.

Outras dicas

Infelizmente, sua senha de usuário é irrecuperável.Foi hash com um hash unilateral que, se você não sabe, é irreversível.Eu recomendo ir com Xenph Yan acima e apenas criar um novo.

Você também pode usar o seguinte procedimento de o manual para redefinir a senha de qualquer MySQL raiz contas no Windows:

  1. Faça logon no seu sistema como administrador.
  2. Pare o servidor MySQL se ele estiver em execução.Para um servidor que está em execução como um serviço do Windows, vá para o gerente de serviços:

Menu Iniciar -> Painel de Controle -> Ferramentas Administrativas -> Serviços

Em seguida, encontre o serviço MySQL na lista e interrompa-o.Se o seu servidor não estiver em execução como um serviço, pode ser necessário usar o gerenciador de tarefas para forçá -lo a parar.

  1. Crie um arquivo de texto e coloque as seguintes instruções nele.Substitua a senha pela senha que você deseja usar.

    UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
    FLUSH PRIVILEGES;
    

    O ATUALIZAR e RUBOR cada instrução deve ser escrita em uma única linha.O ATUALIZAR instrução redefine a senha para todas as contas root existentes, e o RUBOR instrução diz ao servidor para recarregar as tabelas de concessão na memória.

  2. Salve o arquivo.Para este exemplo, o arquivo será nomeado C:\mysql-init.txt.
  3. Abra uma janela do console para acessar o prompt de comando:

    Menu Iniciar -> Executar -> cmd

  4. Inicie o servidor MySQL com o especial --init-file opção:

    C:\> C:\mysql\bin\mysqld-nt --init-file = C:\mysql-init.txt
    

    Se você instalou o MySQL em um local diferente C:\mysql, ajuste o comando de acordo.

    O servidor executa o conteúdo do arquivo nomeado pelo --init-file opção na inicialização, alterando cada raiz Senha da conta.

    Você também pode adicionar o --console opção ao comando se desejar que a saída do servidor apareça na janela do console em vez de em um arquivo de log.

    Se você instalou o MySQL usando o Assistente de Instalação do MySQL, pode ser necessário especificar um --defaults-file opção:

    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
    

    O apropriado --defaults-file configuração 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 o executável contém o --defaults-file contexto.

  5. Depois que o servidor for iniciado com sucesso, exclua C:\mysql-init.txt.
  6. Pare o servidor MySQL e reinicie-o novamente no modo normal.Se você executar o servidor 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.

Agora você deve conseguir se conectar ao MySQL como root usando a nova senha.

Uma melhoria para a resposta mais útil aqui:

1] Não há necessidade de reiniciar o servidor mysql
2] Preocupação com a segurança de um servidor MySQL conectado a uma rede

Não há necessidade de reiniciar o servidor MySQL.

usar FLUSH PRIVILEGES; após a instrução update mysql.user para alteração de senha.

A instrução FLUSH informa ao servidor para recarregar as tabelas de concessão na memória para que ele perceba a alteração da senha.

O --skip-grant-options permite que qualquer pessoa se conecte sem senha e com todos os privilégios.Como isso é inseguro, você pode querer

usar --skip-grant-tables em conjunção com --skip-rede para impedir que clientes remotos se conectem.

de:referência: redefinindo permissões genéricas

Embora você não possa recuperar diretamente uma senha do MySQL sem força bruta, pode haver outra maneira - se você usou o MySQL Workbench para se conectar ao banco de dados e salvou as credenciais no "cofre", você está certo.

No Windows, as credenciais são armazenadas em %APPDATA%\MySQL\Workbench\workbench_user_data.dat - criptografado com CryptProtectData (sem qualquer entropia adicional).Descriptografar é fácil:

std::vector<unsigned char> decrypt(BYTE *input, size_t length) {
    DATA_BLOB inblob { length, input };
    DATA_BLOB outblob;

    if (!CryptUnprotectData(&inblob, NULL, NULL, NULL, NULL, CRYPTPROTECT_UI_FORBIDDEN, &outblob)) {
            throw std::runtime_error("Couldn't decrypt");
    }

    std::vector<unsigned char> output(length);
    memcpy(&output[0], outblob.pbData, outblob.cbData);

    return output;
}

Ou você pode verificar isso Tópico DonationCoder para fonte + executável de uma implementação rápida e suja.

Se você tiver acesso root ao servidor onde o mysql está sendo executado, você deve parar o servidor mysql usando este comando

sudo service mysql stop

Agora inicie o mysql usando este comando

sudo /usr/sbin/mysqld --skip-grant-tables  --skip-networking &

Agora você pode fazer login no mysql usando

sudo mysql
FLUSH PRIVILEGES;
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');

Instruções completas podem ser encontradas aqui http://www.techmatterz.com/recover-mysql-root-password/

Faça isso sem tempo de inatividade

Execute o seguinte comando no Terminal para conectar-se ao DBMS (você precisa de acesso root):

sudo mysql -u root -p;

execute a senha de atualização do usuário de destino (no meu exemplo, o nome de usuário é mousavi e sua senha deve ser 123456):

UPDATE mysql.user SET authentication_string=PASSWORD('123456') WHERE user='mousavi';  

neste ponto você precisa fazer um flush para aplicar as alterações:

FLUSH PRIVILEGES;

Feito!Você fez isso sem parar ou reiniciar o serviço mysql.

Faça login no MySql do Windows cmd usando o usuário existente:

mysql -u nome de usuário -p
Digite a senha:****

Em seguida, execute o seguinte comando:

mysql> SELECT * FROM mysql.user;

Depois disso, copie a senha md5 criptografada para o usuário correspondente e há vários aplicativos online descriptografados por senha disponíveis na web.Use esta senha de descriptografia e use-a para fazer login na próxima vez.ou atualize a senha do usuário usando o comando fluido:

mysql> UPDATE mysql.user SET Password=PASSWORD('[password]') WHERE User='[username]';

Em seguida, faça login usando a nova senha e usuário.

Embora uma interpretação estrita, lógica e científica da questão da operação exigisse ambos "Como faço para recuperar meu nome de usuário MySQL" e "senha" - pensei que poderia ser útil para alguém abordar também o OU interpretação.Em outras palavras ...

1) Como recupero meu nome de usuário MySQL?

OU

2) senha

Esta última condição parece já ter sido amplamente abordada, por isso não vou me preocupar com isso.A seguir está uma solução apenas para o caso "Como faço para recuperar meu nome de usuário MySQL".OI.

Para encontrar seu nome de usuário mysql, execute os seguintes comandos no shell mysql ...

SELECIONE Usuário DE mysql.user;

ele imprimirá uma tabela de todos os usuários do MySQL.

SE você tiver o ODBC configurado, poderá obter a senha no arquivo de configuração do ODBC.Isso está em /etc/odbc.ini para Linux e na pasta Software/ODBC no registro do Windows (existem vários - pode demorar um pouco)

Para usuário de janela, você pode seguir isto guia para redefinir sua senha

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top