Redefinir e restaurar a senha do mysql

1

Eu tenho uma senha de root do Linux. Há um servidor MySQL nessa máquina. Um dos ini do site foi reescrito e agora ele não pode acessar o banco de dados mysql. Eu não tenho raiz mysql para alterar a senha para o usuário do banco de dados. O dono do servidor agora está de férias, então não posso pedir a ele que me forneça a raiz do mysql. Eu posso redefinir a senha de root do mysql, mas não quero.

Eu preciso:

  1. Salve o hash da senha raiz do mysql atual em algum lugar
  2. Redefinir
  3. Faça as coisas como raiz do mysql (redefinir o usuário do banco de dados pw)
  4. Restaurar a senha antiga do root

Como fazer os pontos 1 e 4?

    
por ABTOMAT 31.07.2012 / 19:28

3 respostas

3

O comum procedimento de redefinição de senha é executado criando um arquivo init que redefine a senha de root. Em seguida, reinicie o servidor com uma opção forçando-o a executar esse script com privilégios de root como o usuário root.

O script de exemplo mostra a você a redefinição da senha do root, mas não há motivo para que você simplesmente não tenha o script redefinir a senha do usuário que você deseja redefinir.

Portanto, se você tiver a capacidade de reiniciar o servidor mysql e especificar um arquivo init, você poderá pular as etapas 1, 2 e 4 e simplesmente executar um script como root. Não há realmente nenhuma razão para que você precise tocar na conta root.

    
por 31.07.2012 / 19:37
2

AVISO: Requer o reinício do mysql para os passos 1-3

Isso pode ser feito sem ...

Quando você fizer o login no Linux Box, para criar uma raiz temporária para você mesmo com a senha t3mpp@assw0rd , execute as seguintes etapas

PASSO 01) service mysql restart --skip-networking --skip-grant-tables

PASSO 02) No prompt do Linux, digite mysql e tecle enter

PASSO 03) Execute este Comando SQL

SELECT COUNT(1) RootLocalhostExists FROM mysql.user
WHERE user='root' AND host='localhost';
  • Se RootLocalhostExists for 0, pare aqui. Deixe um comentário na minha resposta.
  • Se RootLocalhostExists for 1, vá para o PASSO 04.

PASSO 04) Execute estes comandos SQL

CREATE TABLE mysql.user2 LIKE mysql.user;
INSERT INTO mysql.user2 SELECT * FROM mysql.user
WHERE user='root' AND host='localhost';
UPDATE mysql.user SET PASSWORD=PASSWORD('t3mpp@assw0rd')
WHERE user='root' AND host='localhost';

PASSO 05) service mysql restart

Isso fará seus passos de 1 a 3.

RESTAURAÇÃO DE SENHAS

Para colocar de volta a raiz original do mysql, faça isso ( Reinicialização do MySQL não é necessária ):

PASSO 01) No prompt do Linux, digite mysql -uroot -pt3mpp@assw0rd e tecle enter

PASSO 02) Execute o seguinte SQL

DELETE FROM mysql.user WHERE user='root' AND host='localhost';
INSERT INTO mysql.user SELECT * FROM mysql.user2;
DROP TABLE mysql.user2;
FLUSH PRIVILEGES;
EXIT

É isso.

Experimente!

    
por 31.07.2012 / 22:26
0

Se o seu servidor mysql está rodando no Debian (ou ubuntu ou similar) você provavelmente pode usar o usuário debian-sys-maint ao invés do usuário root do mysql. Procure em /etc/mysql/debian.cnf

Possui SUPER privs e pode alterar a senha de um usuário.

    
por 01.08.2012 / 13:04