Redefina a senha root do MySQL usando a instrução ALTER USER após a instalação no Mac


184

Eu sou novo em toda a experiência do Mac. Eu instalei recentemente o MySQL e parece que tenho que redefinir a senha após a instalação. Não vai me deixar fazer mais nada.

Agora eu já redefini a senha da maneira usual:

update user set password = password('XXX') where user = root;

(BTW: levei anos para descobrir que o MySQL, por algum motivo bizarro, renomeou o campo 'senha' para 'authentication_string'. Estou bastante chateado com mudanças como essa.)

Infelizmente, parece que preciso alterar a senha de uma maneira diferente que não me seja conhecida. Talvez alguém aqui já tenha encontrado esse problema?

Respostas:


508

Se essa NÃO é a primeira vez que você configura a senha, tente este método:

mysql> UPDATE mysql.user SET Password=PASSWORD('your_new_password')
           WHERE User='root'; 

E se você receber o seguinte erro, há uma grande chance de você nunca ter definido sua senha antes:

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement. 

Para configurar sua senha pela primeira vez :

mysql> SET PASSWORD = PASSWORD('your_new_password');
Query OK, 0 rows affected, 1 warning (0.01 sec)

Referência: https://dev.mysql.com/doc/refman/5.6/en/alter-user.html


10
Obrigado! Mensagem de erro muito confusa do MySQL!
Ed.

1
Isso funcionou para mim com mysql-5.7.13-osx10.11-x86_64
GiriB 21/16/16

1
Após o 'mysql> SET PASSWORD = PASSWORD (' your_new_password ');', estou recebendo o seguinte erro: 'ERRO 29 (HY000): Arquivo' ./mysql/user.MYD 'não encontrado (Código de erro: 2 - Não existe arquivo ou diretório) '. Alguém pode me ajudar ?
Ray Kim

4
Você vai notar que ao contrário do que MySQL sugere, você não usar a instrução "ALTER USER", mas apenas "Definir senha" ...
Fabien Haddadi

1
O primeiro exemplo potencialmente tenta definir uma senha para outro usuário que você esteja usando ao enviar essa linha. O segundo tenta definir a senha para o usuário que você usou para efetuar login no mysql. Assim, os trabalhos posteriores.
Hafenkranich 26/10

130

Se você iniciou o mysql usando mysql -u root -p

Experimentar ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

Fonte: http://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html


1
Obrigado! Isso funcionou para mim! Estou usando o mysql-5.7.11-osx10.10-x86_64.
LeArNr 27/02

Isso funcionou; Obrigado! Me entristece profundamente que, embora o MySQL seja um programa tão amplamente usado, não há documentação completa para instalar e fazê-lo funcionar rapidamente.
`` Shatu

Obrigado ! Isso me ajudou
Sparw

3
Depois de muita frustração, uma variante desta trabalhou em hortelã 18 mysql 5.7.18:ALTER USER 'root'@'localhost' indentified WITH mysql_native_password BY 'password';
Steve

Um milhão de agradecimentos. Essa é a única coisa que funcionou para mim.
precisa saber é o seguinte

33

Eu tenho o mesmo problema no Mac

Primeiro, efetue login no mysql com o modo sandbox

mysql -u <user> -p --connect-expired-password

Em seguida, defina a senha

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('XXXX');

Query OK, 0 rows affected, 1 warning (0.01 sec)

Funciona para mim ~

via: /dba/118852/your-paswssword-has-expired-after-restart-mysql-when-updated-mysql-5-7-8-rcde


1
Parece bastante complicado, tendo em mente que você precisa fazer isso antes mesmo de usar o banco de dados.
precisa saber é o seguinte

no aviso que quer que você useSET PASSWORD FOR 'root'@'localhost' = 'XXXX';
Arsen Zahray

22

Se você usa o MySQL 5.7.6 e posterior:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

Se você usa o MySQL 5.7.5 e versões anteriores:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');

Documentação MySQL


1
Estou usando o MySQL 5.7.9 e o estranho é que SET PASSWORD = PASSWORD('my_pass')funciona para mim. Existem comentários de pessoas com versões mais recentes mencionando que esta declaração também funcionou para eles. Apesar disso, votei na sua resposta desde que você encontrou essa referência específica nos documentos do MySQL que ninguém mencionou anteriormente.
Armfoot

MySQL 8 SET PASSWORD jogou e erro. ALTER USER trabalhou.
Timar Ivo Batis

13

No MySQL 5.7.x, você precisa mudar para a senha nativa para poder alterá-la, como:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'test';

11

Execute estes:

$ cd /usr/local/mysql/bin
$ ./mysqladmin -u root password 'password'

Então corra

./mysql -u root

Ele deve efetuar login. Agora execute os privilégios FLUSH;

Então saia do console do MySQL e tente fazer login. Se isso não funcionar, execute estes:

$ mysql -u root
mysql> USE mysql;
mysql> UPDATE user SET authentication_string=PASSWORD("XXXXXXX") WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> quit

Altere xxxxxx para sua nova senha. Em seguida, tente fazer login novamente.

Atualizar. Consulte este http://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html

Isso deve resolver seu problema.

Se você estiver no oracle, tente isso

ALTER USER username IDENTIFIED BY password

Não, desculpe, isso também não funciona. Pelo menos não mais. A coluna 'senha' foi renomeada pelo Oracle, btw. Agora é chamado authentication_string. Mas não consigo executar este comando, porque primeiro preciso alterar a senha usando o comando ALTER USER. Isso é incrivelmente frustrante, porque não é assim que você tradicionalmente atualiza a senha. ALTER deve ser reservado para tabelas, funções e outras coisas, sem alterar as entradas em uma tabela. Essa é a declaração de atualização. (desculpe a rant)
dengar81

@ Shivan Paw: Dois avisos que eu esperaria: mysqladmin: [Warning] O uso de uma senha na interface da linha de comando pode ser inseguro. Aviso: Como a senha será enviada ao servidor em texto sem formatação, use a conexão ssl para garantir a segurança da senha. - Eu consideraria que a senha está atualizada. E, de fato, posso fazer logon com a nova senha. No entanto, ainda não consigo executar nenhuma consulta, pois preciso atualizar a senha com o comando ALTER USER :(.
dengar81

@ Shivan Paw: Tente o que? Eu já tentei usar os comandos que você sugeriu. Redefinindo a senha usando o comando ./mysqladmin (dois avisos) e depois executando a atualização no mysql.user ... O segundo comando falha com a mensagem "Você deve redefinir sua senha usando ALTER USER [...]"
dengar81 1/11/2015

Esta é a única solução que funcionou para mim. se você tiver uma senha expirada na versão mais recente do mysql, ela não permitirá ALTER_USER ou SET_PASSWORD.
Aaron Henderson


7

ALTER USUÁRIO 'root' @ 'localhost' IDENTIFICADO POR 'new_password';

Use esta linha ...


7

UPDATE user SET authentication_string = PASSWORD ("MyPassWord") WHERE Usuário = 'root'; ERRO 1064 (42000): você tem um erro na sintaxe do SQL; verifique o manual que corresponde à versão do servidor MySQL para obter a sintaxe correta perto de '("MyPassWord") WHERE User =' root '' na linha 1

Resolvido com

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

Referência abaixo do site

https://dev.mysql.com/doc/refman/8.0/en/resetting-permissions.html


5

Em Ver 14.14 Distrib 5.7.19, for macos10.12 (x86_64), entrei como: mysql -uroot -pdigitei a senha gerada pelo MySQL quando você a instalou. Então..

ALTER USER 'root'@'localhost' IDENTIFIED BY '<new_password>';

Exemplo:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Ab1234'; Query OK, 0 rows affected (0.00 sec) mysql> exit Bye $ mysql -uroot -p

E você pode digitar 'Ab1234'


3

Mysql 5.7.24 obter primeiro login root

etapa 1: obtenha a senha do log

 grep root@localhost /var/log/mysqld.log
    Output
        2019-01-17T09:58:34.459520Z 1 [Note] A temporary password is generated for root@localhost: wHkJHUxeR4)w

passo 2: entre com ele no mysql

mysql -uroot -p'wHkJHUxeR4)w'

passo 3: você coloca uma nova senha root

SET PASSWORD = PASSWORD('xxxxx');

você recebe ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

como consertar isso?

Rode isto SET GLOBAL validate_password_policy=LOW;

Tente novamente SET PASSWORD = PASSWORD('xxxxx');



2

Aqui está o caminho para mim.

mysql> show databases ;

ERRO 1820 (HY000): você deve redefinir sua senha usando a instrução ALTER USER antes de executá-la.

mysql> uninstall plugin validate_password;

ERRO 1820 (HY000): você deve redefinir sua senha usando a instrução ALTER USER antes de executá-la.

mysql> alter user 'root'@'localhost' identified by 'root';

Consulta OK, 0 linhas afetadas (0,01 s)

mysql> flush privileges;

Consulta OK, 0 linhas afetadas (0,03 s)


1

Quando você o usa, SET PASSWORD = PASSWORD('your_new_password');ele pode travar.

(ERRO 1819 (HY000): sua senha não atende aos requisitos atuais da política)

. você pode usar SET GLOBAL validate_password_policy=LOW;para empurrá-lo.


1

na versão 5.7. O campo 'senha' foi excluído. 'authentication_string' substitua-o

use mysql;
update user set authentication_string=password('123456') where user='root';
flush privileges;

0

Eu também tenho o mesmo problema no mac OS X 10.10.4 (Yosemite). SET PASSWORD funciona para mim. Depois da senha do mysql-mysql> SET PASSWORD = PASSWORD ('your_password'); Consulta OK, 0 linhas afetadas, 1 aviso (0,01 seg)

defina a variável de caminho do ambiente Mysql em .bash_profile e adicione a linha de
exportação PATH = $ PATH abaixo : / usr / local / mysql / bin; depois disso, execute o seguinte comando: source .bash_profile


0

Tive o problema depois que instalei o mysql workbench e o mysql community server. Foi gerada uma senha durante a instalação do servidor. Clicar duas vezes na instância local existente no ambiente de trabalho acionou uma caixa de diálogo onde eu podia definir a nova senha.


0

mysql> SET PASSWORD = PASSWORD('your_new_password'); Isso funciona para mim.


0

lembre-se das versões 5.7.23 e posteriores - a tabela do usuário não possui uma senha de coluna, em vez disso, uma cadeia de autenticação, portanto, abaixo funciona ao redefinir a senha de um usuário.

update user set authentication_string=password('root') where user='root';
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.