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?

dengar81
fonte

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

Madmint
fonte
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

shnraj
fonte
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

Ezio Shiki
fonte
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

Johel Alvarez
fonte
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';
Vadim Smilansky
fonte
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

fonte
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

Talvez tente isso?

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

ou

SET PASSWORD FOR 'root'@'%' = PASSWORD('XXX');

Dependendo do acesso que você usa.

(e não tem certeza de que você deve alterar os nomes dos campos ...)

https://dev.mysql.com/doc/refman/5.0/en/set-password.html

Mateo Barahona
fonte
Desculpe, mas isso não funciona: ERRO 1820 (HY000): você deve redefinir sua senha usando a instrução ALTER USER antes de executá-la.
precisa saber é o seguinte
7

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

Use esta linha ...

Manoj Behera
fonte
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

Siddharth Pandey
fonte
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'

Kenny Alvizuris
fonte
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');

Robert A
fonte
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)

sunling90
fonte
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.

未来 陆家嘴 顶尖 的 投资 人
fonte
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;
HUAN LIU
fonte
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

Moumita
fonte
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.

Malte
fonte
0

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

zhao
fonte
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';
Pravin
fonte