Cometeu um erro de digitação e esqueceu de fechar aspas ao inserir a nova senha root do MySQL

1

Ao inserir uma nova senha para a conta root no MySQL, acidentalmente fiz isso:

mysqladmin -u root -p password 'somepassword 

Onde você pode ver, eu perdi a segunda citação. e eu tenho algo assim.

>

Então entrei 'para terminar a declaração e agora a senha não funciona.

Não estou perguntando como redefinir ou recuperar a senha (eu sei como fazer isso, mas estou tentando evitar reiniciar o serviço). A questão é: É possível ou não digitar uma senha aqui se esse tipo de erro de digitação for feito.

Eu entendo que posso iniciar o servidor MySQL com um arquivo init e redefinir a senha, mas eu queria saber se alguém sabe o que o acima se traduz. É uma nova linha? É possível inserir isso manualmente?

Chris Jones
fonte
11
Sei que isso não responde à sua pergunta, mas você nunca deve digitar a senha diretamente na linha de comando. Isso armazena uma cópia em texto sem formatação da sua senha no arquivo .bash_history para qualquer pessoa ver. Sempre use "mysqladmin -u root -p" e aguarde o prompt da senha.
22614 Tony Maro
Na verdade, a melhor prática me faria logar com o cliente mysql e fazer as alterações lá. Obrigado pela sugestão.
22714 Chris Chris

Respostas:

3

Em seguida, redefina sua senha do MySQL. É assim que eu faço no Ubuntu 12.04. Deve funcionar da mesma forma em outras configurações. É considerado uma maneira insegura de redefinir uma senha do MySQL, já que você precisa iniciar o MySQL em um modo aberto / sem credencial para fazer isso. Mas se você fizer isso e depois reiniciar o MySQL normalmente, você estará bem.

Primeiro, paro o serviço MySQL:

sudo service mysql stop

Então eu o reinicio com a --skip-grant-tablesbandeira:

sudo mysqld --skip-grant-tables &

Agora você pode fazer login sem uma senha como esta:

mysql -u root mysql

E então eu executo a seguinte consulta para redefinir a senha. Observe que você deve alterar o valor YOURNEWPASSWORDpara qualquer senha que você realmente deseja usar:

UPDATE user SET Password=PASSWORD('YOURNEWPASSWORD') WHERE user='root'; FLUSH PRIVILEGES; exit;

Agora que isso foi feito, saia do MySQL e reinicie o daemon da seguinte maneira:

sudo service mysql restart

Se de alguma forma isso não funcionar, use a killallpara matar todas as instâncias de mysqld:

killall mysqld

E, em seguida, inicie o serviço MySQL novamente como faria normalmente:

sudo service mysql start

A nova senha deve ser definida e você estará pronto.

JakeGould
fonte
1

Filmado no escuro aqui, mas parece que sua senha tem um caractere de nova linha incorporado agora. Tente adicionar \nno final da sequência de senha e veja se funciona ou, caso contrário, insira o caractere de controle newline / linefeed no final da senha (depende do terminal).

Isso também me ocorreu. Você pode repetir a mesma coisa novamente? por exemplo

mysqladmin -u root -p 'password RET
>' whatever-you-want-to-do RET

Obviamente, um pouco complicado. Não tem uma instalação para testar, ou eu teria feito, mas vale a pena tentar.

Nota: Sinto que isso já aconteceu comigo antes.

Sam Halicke
fonte
11
Obrigado pela tentativa. Boa ideia. Parece que estou desligado para agendar uma janela de manutenção. Obrigado novamente. A nota foi especialmente agradável
Chris Jones
Ha, de nada! Coisas assim ... "está tudo no jogo."
Sam Halicke 13/03/14
1

Se você souber * exatamente o que digitou, poderá efetuar login com esse valor - mas precisará especificá-lo na linha de comando, e não através de um arquivo ini ou da senha pro, pt (onde newline é interpretada como o final da entrada ) Por exemplo:

mysqladmin -u root -p"somepassword\n\n\n" password 'newpassword'

Se você não conseguir recriar o valor digitado anteriormente, precisará seguir a rota do arquivo ini diferente.

symcbean
fonte
Ótima idéia, infelizmente, não funcionou. Parece que im off para agendar uma janela de manutenção :(
Chris Jones