Alteração de senha de root do MySQL

95

Tenho tentado redefinir minha senha de root do MySQL. Eu executei mysqld_safe --skip-grant-tables, atualizei a senha do root e verifiquei a tabela do usuário para ter certeza de que está lá. Depois de reiniciar o daemon mysql, tentei efetuar login com a nova senha de root que acabei de definir e ainda consigo Acesso negado para erros do usuário 'root'. Também tentei remover e reinstalar completamente o mysql (incluindo a remoção do arquivo my.cnf) e ainda não tive sorte. Alguém tem alguma sugestão sobre o que posso fazer a seguir?

desde já, obrigado

usuario
fonte
2
por favor poste seu erro real
Vishwanath Dalvi
16
Se você não está bloqueado, SET PASSWORD FOR 'root'@'localhost' = PASSWORD('somepassword'); é mais seguro.
sabgenton
Segui os passos do vídeo para alterar a senha em um dos meus servidores youtu.be/gFo5DV_pSg8
Prem
1
Versão do servidor: 8.0.20-0ubuntu0.20.04.1 (Ubuntu) ERROR 1064 (42000): você tem um erro em sua sintaxe SQL; verifique o manual que corresponde à versão do seu servidor MySQL para a sintaxe correta para usar próximo a 'PASSWORD ("1")' na linha 1 SET PASSWORD FOR 'root' @ 'localhost' = PASSWORD ("alguma senha");
discipleartem

Respostas:

124

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

kta
fonte
7
Isso está funcionando para mim no 5.7, enquanto a resposta aceita não.
Stoopkid,
2
Esta é a solução correta se sua senha de root do MySQL estiver definida como em branco.
fschuindt
3
> ATUALIZAR mysql.user SET authentication_string = PASSWORD ('MyNewPass') WHERE user = 'root'; > FLUSH PRIVILEGES; No MySQL versão 5.7.x não há mais campo de senha na tabela mysql. Ele foi substituído por authentication_string.
Robert Anthony S. Tribiana
2
Isso me dá um OK, mas na verdade não faço nada
Freedo 01 de
1
Ele precisa de um comando extra FLUSH PRIVILEGESpara tornar efetiva a mudança sem reiniciar o servidor de banco de dados.
NetVicious
60

dê uma olhada no manual de referência do MySQL:

Primeiro login no mysql:

# mysql -u root -p

Então, no prompt do mysql, execute:

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

Então

FLUSH PRIVILEGES;

Veja esta página para mais informações: Redefinindo a Senha Root: Sistemas Unix

VSB
fonte
Recebi um erro "Você está usando o modo de atualização seguro e tentou atualizar uma tabela sem um WHERE que usa uma coluna KEY ..." ao atualizar a senha do usuário. Consulte stackoverflow.com/questions/11448068/… para saber como solucionar esse erro.
Joe Borysko
ERROR 1064 (42000): você tem um erro na sintaxe SQL; verifique o manual que corresponde à versão do seu servidor MySQL para a sintaxe correta a ser usada perto de '(' MyNewPass ') WHERE User =' root '' na linha 1
discipleartem
28
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

Você pode encontrar Resetting the Root Password na documentação do MySQL.

Iamfaith
fonte
Esta consulta funcionou para mim, mas a nova senha não está funcionando (Acesso negado). Só começou a funcionar depois que recriei o usuário root askubuntu.com/a/784347/160368 .
hlcs
1
funciona para mim no MySQL 8.0.20 e após inicializar a pasta de dados usando este comandomysqld --initialize --console
A. Henteti
27

Esta é a resposta atualizada para WAMP v3.0.6 e superior

> UPDATE mysql.user 
> SET authentication_string=PASSWORD('MyNewPass') 
> WHERE user='root';

> FLUSH PRIVILEGES;

No MySQL versão 5.7.x não há mais campo de senha na tabela mysql. Ele foi substituído por authentication_string. (Isso é para o terminal / CLI)

UPDATE mysql.user SET authentication_string=PASSWORD('MyNewPass') WHERE user='root';

FLUSH PRIVILEGES;

(Isso se for para PHPMyAdmin ou qualquer GUI Mysql)

Robert Anthony S. Tribiana
fonte
Essa resposta é uma das poucas que afirma que a mysql.usertabela deve ser atualizada. Observe que se você estiver usando qualquer outro banco de dados (definido pelo usecomando), receberá um erro informando que a tabela usernão existe. Obrigado, senhor!
Aleksandar
1
funciona para mim . Estou usando 5.7.x, não há mysql.usermesa. outras respostas estão desatualizadas
Siwei Shen 申思维
Feliz por ajudar!!
Robert Anthony S. Tribiana
Eu reviro porque é minha intenção usar> por causa do ponto-e-vírgula por linha que é destinado ao terminal
Robert Anthony S. Tribiana
0 linhas afetadas, linhas correspondidas: 3 alteradas: 0 ...?
trainoasis,
22

Encontrei! Esqueci de fazer o hash da senha quando a alterei. Usei esta consulta para resolver meu problema:

update user set password=PASSWORD('NEW PASSWORD') where user='root';

Esqueci PASSWORD('NEW PASSWORD')e coloquei a nova senha em texto simples

usuario
fonte
certifique-se de voltar e aceitar sua resposta para permitir que outros vejam a solução
ghostJago
1
dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html mostra como fazer isso --init-file=se você olhou para fora.
sabgenton
3
Alguma ideia do porque quando eu uso o mesmo comando, o seguinte erro é retornado? Erro 1054 (42S22): coluna desconhecida 'Senha' na 'lista de campos'
Adrian M.
1
Você tem um erro em sua sintaxe SQL; verifique o manual que corresponde à versão do seu servidor MySQL para obter a sintaxe correta para usar próximo a '(' NOVA SENHA ') onde usuário =' root '' na linha 1
discipleartem
20

Siga os passos abaixo.

passo 1. pare o mysql

passo 2. sudo mysqld_safe --skip-grant-tables

etapa 3.mysql -u root

Passo 4.use mysql;

passo 5.show tables;

etapa 6.describe user;

etapa 7.update user set authentication_string=password('1111') where user='root';

login com senha 1111

Lokesh G
fonte
3
flush privilegesé importante como última etapa.
Khom Nazid de
É realmente feito com o cuzinho. Fiz todos os tutoriais para redefinir a senha. Tudo funciona, exceto quando eu logo com a nova senha, ele não funciona.
Shidomaru NeveRage
se o mysqld não estiver iniciando e a mensagem como este daemon mysqld com bancos de dados de / var / lib / mysql mysqld_safe mysqld do arquivo pid /var/run/mysqld/mysqld.pid finalizado faça isto: mkdir / var / run / mysqld chomod 777 / var / run / mysqld e começar do início
jokermt235
18

Também pesquisei e provavelmente algumas respostas se encaixam em algumas situações,

minha situação é Mysql 5.7 em um sistema Ubuntu 18.04.2 LTS:

(obter privilégios de root)

$ sudo bash

(configurar senha para usuário root db + implementar segurança em etapas)

# mysql_secure_installation

(dê acesso ao usuário root por meio de senha em vez de soquete)

(+ editar: aparentemente, você precisa definir a senha novamente?)

(não defina como 'mySecretPassword' !!!)

# mysql -u root

mysql> USE mysql;
mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> set password for 'root'@'localhost' = PASSWORD('mySecretPassword'); 
mysql> FLUSH PRIVILEGES;
mysql> exit;

# service mysql restart

Muito obrigado a zetacu (e erich ) por esta excelente resposta (depois de pesquisar algumas horas ...)

Aproveite :-D

S.

Bamboomy
fonte
Esta é a melhor resposta até agora, pelo menos para o servidor mysql 5.7.
Zoltán Hajdú
A MELHOR resposta. Obrigado.
Luciano Fantuzzi
11

No MySQL 8.0.4+

Para atualizar o usuário root atual:

select current_user();
set password = 'new_password';

Para atualizar outro usuário:

set password for 'otherUser'@'localhost' = 'new_password';

Para definir a política de senha antes de atualizar a senha:

set global validate_password.policy = 0;
set password = 'new_password';
set password for 'otherUser'@'localhost' = 'new_password';

Outra / melhor maneira de atualizar a senha root:

mysql_secure_installation

Deseja manter a autenticação 5.x para ainda poder usar aplicativos legados?

Em my.cnf

default_authentication_plugin = mysql_native_password

Para atualizar a raiz:

set global validate_password.policy = 0;
alter user 'root'@'localhost' identified with mysql_native_password by 'new_password';
Carlito
fonte
7

Isso funcionou para mim -

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

https://dev.mysql.com/doc/mysql-windows-excerpt/5.7/en/resetting-permissions-windows.html

LV98
fonte
ERROR 1064 (42000): você tem um erro na sintaxe SQL; verifique o manual que corresponde à versão do seu servidor MySQL para obter a sintaxe correta para usar próximo a 'IDENTIFICADA POR' MyNewPass '' na linha 1
trainoasis
Acabei de copiar o exato em sql via CLI: o
trainoasis
Claro, sshed para meu servidor + mysql -u root -p para chegar ao mysql cli
trainoasis
6

Você tem que redefinir a senha! etapas para mac osx (testado e funcionando) e ubuntu

Pare o MySQL

$ sudo /usr/local/mysql/support-files/mysql.server stop

Inicie no modo de segurança:

$ sudo mysqld_safe --skip-grant-tables

(acima da linha está todo o comando)

Este será um comando contínuo até que o processo seja concluído, então abra outra janela de shell / terminal e faça login sem uma senha:

$ mysql -u root

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

Inicie o MySQL

sudo /usr/local/mysql/support-files/mysql.server start

sua nova senha é 'senha'.

tk_
fonte
Recebi uma mensagem: nenhum banco de dados selecionado
Mimouni
@Mimouni tente isso: stackoverflow.com/questions/21944936/…
tk_
5

Para MySQL 5.7.6 e posterior:

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

Para MySQL 5.7.5 e anterior:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');
Olho de Águia
fonte
3

Para a versão atual mais recente do mysql (8.0.16), nenhuma dessas respostas funcionou para mim.

Depois de olhar para várias respostas diferentes e combiná-las, acabei usando o que funcionou:

update user set authentication_string='test' where user='root';

Espero que isto ajude.

Suhas
fonte
2

um erro comum que encontro de vez em quando é que esqueci a -popção, então tem certeza de que usou:

mysql -u root -p
Marian Theisen
fonte
2

No MySQL 5.7, a senha é substituída por 'authentication_string'.

usar

update user set authentication_string=password('myfavpassword') where user='root';
Kamal Reddy
fonte
2

Usando o utilitário de linha de comando mysqladmin para alterar a senha do MySQL:

mysqladmin --user=root --password=oldpassword password "newpassword"

Fonte

Darush
fonte
1

Tentei responder @kta, mas não funcionou para mim.

Estou usando MySQL 8.0

Isso funcionou para mim:

mysql> SET PASSWORD FOR 'root'@'localhost' = 'yourpassword'

chainstair
fonte
1
Adicione alguma explicação ao seu código - como exatamente isso resolve uma questão de sete anos?
Nico Haase
Parece que a sintaxe mudou ao longo dos sete anos. Ele não envolve a senha com PASSWORD () dev.mysql.com/doc/refman/8.0/en/set-password.html
kangkyu
O hash da senha deve ser um número hexadecimal de 41 dígitos
Mimouni
1

Tantos comentários, mas fui ajudado neste método:

sudo mysqladmin -u root password 'my password'

No meu caso, após a instalação, consegui o serviço mysql sem uma senha para o usuário root e precisei definir a senha para minha segurança.

Konstantin Romanovsky
fonte
Ele pode ser usado para redefinir a senha do usuário root do mysql sem saber a antiga. Mas certifique-se de que ninguém tenha acesso ao seu syslog, pois esta senha é registrada:Aug 07 16:21:55 ubuntupc sudo[93250]: user : TTY=pts/0 ; PWD=/home/user ; USER=root ; COMMAND=/usr/bin/mysqladmin -u root password 'my password'
Gryu
0

pare todos os serviços wamp, saia de wamp.

abra o bloco de notas e digite> SET PASSWORD FOR 'root' @ 'localhost' = PASSWORD ('');

em seguida, salve-o na unidade c: com qualquer nome .. como este "c: /example.txt"

agora vá para seu "wamp" falder wamp> bin> mysql> mysql (sua versão)> bin no meu caso o caminho é "C: \ wamp \ bin \ mysql \ mysql5.6.17 \ bin"

agora copie seu caminho e execute cmd com (ctrl + r) e digite "cmd" (enter)

digite cd, clique com o botão direito do mouse em cmd e cole o caminho (digite) agora digite (mysqld --init-file = C: \ example.txt) sem colchetes e (digite)

em seguida, reinicie o PC ou abra o taskmgr e elimine o mysqld.exe

inicie o wamp e sua senha será removida ...

MohitGhodasara
fonte
0

Para usuários de MacOS, se você esquecer sua senha de root, @resposta de soharaK ( https://stackoverflow.com/a/28601069/5628856 ) é boa, mas há mais alguns truques:

Se você estiver usando a preferência do sistema para iniciar o lado do servidor mysql, simplesmente

sudo mysqld_safe --skip-grant-tables

pode não funcionar para você.

Você deve ter certeza de que os argumentos da linha de comando são os mesmos da configuração de inicialização do sistema.

O seguinte comando funciona para mim:

/usr/local/mysql/bin/mysqld --user=_mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --log-error=/usr/local/mysql/data/mysqld.local.err --pid-file=/usr/local/mysql/data/mysqld.local.pid --keyring-file-data=/usr/local/mysql/keyring/keyring --early-plugin-load=keyring_file=keyring_file.so --skip-grant-tables

Você pode usar

ps aux | grep mysql

para verificar o seu.

Shaofei Cheng
fonte
-1

No Ubuntu,

sudo dpkg-reconfigure mysql-server-5.5 

Substitua 5.5pela sua versão atual e será solicitada a nova senha de root.

Mouneer
fonte
Em qual sistema operacional? Isso não faz sentido.
Khom Nazid de
-1
  1. No Mac, abra as preferências do sistema> MySQL.
  2. Na seção de configuração do MySQL, verifique se há inicialização do banco de dados.
  3. altere a senha no prompt. inicializar banco de dados
NNK Teja
fonte