Como alterar a senha para [email protected] e [email protected]

5

Eu estava olhando para os usuários na minha tabela mysql.user e notei que existem 3 raízes.

root@localhost
[email protected]
[email protected]

Quando descobri isso, nenhuma das raízes era protegida por senha. Eu consegui proteger com senha o root @ localhost, mas não consigo descobrir como proteger os outros dois. Como eu faria isso via linha de comando?

Obrigado por qualquer ajuda.

    
por jasonaburton 22.02.2011 / 18:50

2 respostas

4

Consulta SQL:

update user set password=PASSWORD("NEWPASSWORD") where User='root' AND Host="127.0.0.1";
update user set password=PASSWORD("NEWPASSWORD") where User='root' AND Host="example.com";
    
por 22.02.2011 / 18:55
1

Eu tenho três (3) precauções para você. Por favor, lembre-se do seguinte:

Precaução 1) Sempre execute FLUSH PRIVILEGES após atualizar o mysql.user. Caso contrário, as alterações não terão efeito até a próxima reinicialização do mysql.

Precaução 2) Se você tiver o log binário ativado, desabilite o log binário em sua sessão. Caso contrário, a senha do mysql ficará visível nos logs binários. Não se preocupe, o log binário está ativado para todas as outras conexões de banco de dados.

SET sql_log_bin = 0;
atualizar senha do conjunto de usuários = PASSWORD ("NEWPASSWORD") em que Usuário = 'root' E Host="127.0.0.1"; atualizar senha do conjunto de usuários = PASSWORD ("NEWPASSWORD") em que Usuário = 'root' E Host="example.com ';
PRIVILÉGIOS DE FLUSH;

Precaução 3) Na versão Linux do mysql, o arquivo /root/.mysql_history registra sua digitação da sessão. A senha também ainda está visível. Edite suas alterações usando o vi.

Para não se preocupar em desativar o registro em log binário para ocultar a senha, isso é o que geralmente faço:

Eu tenho o mysql em execução na área de trabalho do windows. Eu corri o seguinte no MySQL para Windows:

lwdba @ localhost (DB information_schema) :: selecione a senha ('NEWPASSWORD');
+ ------------------------------------------- +
| password ('NEWPASSWORD')

+ ------------------------------------------- +
| * B845F78DCA29B8AE945AB9CFFAC24A9D17EB5063

+ ------------------------------------------- +
1 linha no set (0.00 seg)

Agora, execute isso no MySQL para Linux:

SET sql_log_bin = 0;
update user set password = '* B845F78DCA29B8AE945AB9CFFAC24A9D17EB5063' onde Usuário = 'root' E Host="127.0.0.1";
update user set password = '* B845F78DCA29B8AE945AB9CFFAC24A9D17EB5063' onde Usuário = 'root' E Host="example.com ';
PRIVILÉGIOS DE FLUSH;

Três razões pelas quais isso é mais vantajoso:

  1. Isso é mais seguro. A senha em texto não criptografado nunca está presente em nenhum lugar do Linux.
  2. Você não desabilita o log binário.
  3. Embora seja visível nos logs binários, quem pode entender a saída criptografada MD5 ???
por 22.02.2011 / 20:57