Como descobrir a senha root do MySQL


167

Não consigo descobrir minha senha root do MySQL; como posso descobrir isso? Existe algum arquivo em que essa senha esteja armazenada?

Estou seguindo este link, mas não tenho o diretório directadmin no local.


Encontrado por um simples Google Search: dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html
Arran

11
senha de root padrão é - vejam só - "root" (sem as aspas), ou nenhuma senha em tudo (e é esse servidor mysql realmente o seu)
Nikola Bogdanović

sim, é meu servidor MySQL local no meu laptop
Om3ga

então alguém passou por essa pergunta e fez um voto negativo em cada resposta correta e relevante ?
lanzz

Respostas:


142

graças a @thusharaK, eu poderia redefinir a senha root sem saber a senha antiga.

No ubuntu, fiz o seguinte:

sudo service mysql stop
sudo mysqld_safe --skip-grant-tables --skip-syslog --skip-networking

Em seguida, execute o mysql em um novo terminal:

mysql -u root

E execute as seguintes consultas para alterar a senha:

UPDATE mysql.user SET authentication_string=PASSWORD('password') WHERE User='root';
FLUSH PRIVILEGES;

No MySQL 5.7, o campo de senha no campo da tabela mysql.user foi removido, agora o nome do campo é 'authentication_string'.

Saia do modo de segurança do mysql e inicie o serviço mysql:

mysqladmin shutdown
sudo service mysql start

24
Eu tive que usar mysqladmin -u root -p shutdown, com a nova senha.
SL Barth - Restabelece Monica

2
Bom fluxo de instruções, especialmente: em seguida, execute o mysql em um novo terminal
Mohammed Subhi Sheikh Quroush

8
Eu não posso fazer isso mysql -u root. Mostra erroAccess denied
Avinash Raj

4
@AvinashRaj: Tente isto: sudo mysql-u raiz
Allen Gingrich

Impressionante. Estou compreendendo o que funcionou no RHEL 7: Terminal 1: serviço sudo mysql stop sudo mysqld_safe --skip-grant-tables --skip-syslog --skip-networking Terminal 2: mysql -u root UPDATE mysql.user SET Password = PASSWORD ('nova senha') WHERE User = 'root'; PRIVILÉGIOS DE LAVAGEM; mysqladmin -u root -p shutdown Nota: Depois de encerrado o mysqladmin, você verá o modo de segurança sair no Terminal 1. sudo service mysql start É isso e funciona como um encanto com a nova senha!
Usuário StackOverFlow

65

Você não pode ver a senha com hash; a única coisa que você pode fazer é redefini-lo!

Pare o MySQL:

sudo service mysql stop

ou

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

Inicie no modo de segurança:

$ sudo mysqld_safe --skip-grant-tables

(a linha acima é o comando inteiro)

Este será um comando em andamento até o término do processo; portanto, abra outra janela do shell / terminal, faça o login sem uma senha:

$ mysql -u root

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

MySQL 5.7 e superior:

mysql> use mysql; 
mysql> update user set authentication_string=password('password') where user='root'; 

Inicie o MySQL:

sudo mysql start

ou

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

Sua nova senha é 'senha'.


sudo /usr/local/mysql/support-files/mysql.server stop sudo: /usr/local/mysql/support-files/mysql.server: comando não encontrado
Isuru

O que fazer neste caso?
Isuru

Parece que o mysql não está instalado corretamente. Desinstale-o corretamente e reinstale.
tk_ 17/12/2015

Muito obrigado. Algo deu errado com o meu mysql_secure_installatione a raiz não estava mais cooperando. O que a authentication_stringconfiguração faz?
será

3
Para reiniciar, tente mysqladmin -u root -p shutdowncom a nova senha entãosudo service mysql start
forumulator

37

O MySQL 5.7 e superior salva a raiz no arquivo de log do MySQL.

Por favor tente isto:

sudo grep 'temporary password' /var/log/mysqld.log

No meu caso, a senha não estava aqui; no entanto, em vez disso, /var/log/mysql/error.logcontinha uma advertência sobre a senha de root estar vazio - de modo que este tipo de salvou meu dia :)
Janaka Bandara

19

uma coisa que me levou a uma nova instalação do mySQL e me pergunto por que não consegui que a senha padrão funcionasse e por que até os métodos de redefinição não estavam funcionando. bem acontece que no Ubuntu 18 a versão mais recente do servidor mysql não usa autenticação por senha para o usuário root por padrão. Portanto, isso significa que não importa o que você definir, não permitirá que você o use. está esperando que você efetue login a partir de um soquete privilegiado. tão

mysql -u root -p

não funcionará, mesmo se você estiver usando a senha correta !!! negará acesso, não importa o que você colocar.

Em vez disso, você precisa usar

sudo mysql

que funcionará sem qualquer senha. então quando você precisar digitar

 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Password you want to use';

então saia e agora a coisa sangrenta finalmente aceitará sua senha



14

Siga estas etapas para redefinir a senha no sistema Windows

  1. Pare o serviço Mysql do gerenciador de tarefas

  2. Crie um arquivo de texto e cole a instrução abaixo

MySQL 5.7.5 e versões anteriores:

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


MySQL 5.7.6 e posterior:

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

  1. Salve como mysql-init.txte coloque-o 'C' drive.

  2. Abra o prompt de comando e cole o seguinte

C:\> mysqld --init-file=C:\\mysql-init.txt


2
Este foi um salva-vidas, ótima dica!
Nicholas Kreidberg 13/10

trabalhou em Centos7 mysqld --init-file=/root/m.txt. Eu adicionei o comando acima SET PASSWORD FOR 'root'@'localhost' = PASSWORD('yournewpassword');ao /root/m.txt
Damodar Bashyal

8

A menos que o gerenciador de pacotes solicite que você digite a senha raiz durante a instalação, a senha raiz padrão é a sequência vazia. Para conectar-se ao servidor recém-instalado, digite:

shell> mysql -u root --password=
mysql>

Para alterar a senha, volte ao shell unix e digite:

shell> mysqladmin -u root --password= password root

A nova senha é 'root'. Agora conecte-se ao servidor:

shell> mysql -u root --password=
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

Ops, a senha foi alterada. Use o novo root:

shell> mysql -u root --password=root
...
blah, blah, blah : mysql welcome banner
...
mysql> 

Bingo! Novo fazer algo interessante

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.00 sec)

Maurycy


1
agora não está usando senhas, mas soquetes autenticados. apenas alterar a senha não é mais suficiente.
Kit Ramos

7

Além das outras respostas, em uma instalação cpanel, a senha root do mysql é armazenada em um arquivo chamado /root/.my.cnf. (e o serviço cpanel redefine-o novamente, portanto as outras respostas aqui não ajudarão)


6

você pode ver a senha root do mysql, bem, eu tentei no mysql 5.5, então não conheço outra versão nova, funcione ou não

nano ~/.my.cnf

4

Isso funcionou para mim:

No terminal, digite o seguinte

$ sudo mysql -u root -p

Digite a senha: // basta pressionar enter

mysql>


parece que o servidor mysql não está mais usando autenticação por senha. você precisa iniciar o cliente mysql como um superusuário (sudo) para obter acesso até alterar o método de login.
Kit Ramos

4

A senha padrão que funcionou para mim após a instalação imediata do servidor mysql é: mysql


2
talvez ele não tenha respondido à pergunta, mas muitas pessoas que chegam aqui podem achar que isso resolve seu problema.
Ohad Cohen

3

O procedimento muda dependendo da versão do MySql. Siga o procedimento exatamente como descrito para sua versão:

  • DICAS - Leia antes da página de instruções para sua versão do MySql *

  • Na etapa 5: em vez de executar o CMD, crie um atalho na área de trabalho chamando CDM.exe. Em seguida, clique com o botão direito do mouse no atalho e selecione "Executar como administrador".

  • Na etapa 6: ignore a primeira versão proposta do comando e execute a segunda, aquela com o parâmetro --defaults-file

  • Depois de executar o comando, se tudo estiver ok, a janela do CMD permanecerá aberta e o comando da etapa 6 continuará em execução. Simplesmente feche a janela (clique em 'x') e force o fechamento do MySQl no Gerenciador de tarefas.

  • Exclua o arquivo com os comandos SQL e inicie novamente o MySQL. A senha deve ser alterada agora.

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

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

... basta alterar a versão no link (5.5, 5.6, 5.7)


3

No seu arquivo .err "hostname" dentro da pasta de dados em que o MySQL trabalha, tente procurar por uma string que comece com:

"Uma senha temporária é gerada para roor @ localhost"

você pode usar

less /mysql/data/dir/hostname.err 

pressione o comando slash seguido da string que você deseja procurar

/"A temporary password"

Em seguida, pressione n para ir para o próximo resultado.



0

Sistema:

  • CentOS Linux 7
  • mysql Ver 14.14 Distrib 5.7.25

Procedimento:

  1. Abra duas sessões de shell, efetuando login em uma como usuário raiz do Linux e a outra como usuário não raiz com acesso ao mysqlcomando.

  2. Em sua sessão raiz, pare o ouvinte normal do mysqld e inicie um ouvinte que ignora a autenticação de senha ( nota: esse é um risco de segurança significativo, pois qualquer pessoa com acesso ao mysql comando pode acessar seus bancos de dados sem uma senha. Você pode fechar sessões de shell ativas e / ou desativar o acesso ao shell antes de fazer isso):

    # systemctl stop mysqld
    # /usr/sbin/mysqld --skip-grant-tables -u mysql &

  3. Na sua sessão não raiz, efetue login no mysql e defina a senha root do mysql:

    $ mysql
    mysql> flush privileges;
    Query OK, 0 rows affected (0.00 sec)

    mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');
    Query OK, 0 rows affected, 1 warning (0.01 sec)

    mysql> quit;

  4. Na sua sessão raiz, mate a instância sem senha do mysqld e restaure o ouvinte normal do mysqld para o serviço:

    # kill %1
    # systemctl start mysqld

  5. Na sua sessão não raiz, teste a nova senha raiz configurada acima:

    $ mysql -u root -p
    Enter password:
    Welcome to the MySQL monitor. Commands end with ; or \g.
    ...
    mysql>


-2

Eu resolvi isso de uma maneira diferente, isso pode ser mais fácil para alguns.

Fiz desta maneira porque tentei iniciar no modo de segurança, mas não consigo conectar com o erro: ERRO 2002 (HY000): Não é possível conectar ao servidor MySQL local através do soquete '/var/run/mysqld/mysqld.sock' (2)

O que eu fiz foi conectar normalmente como root:

$ sudo mysql -u root

Então eu criei um novo superusuário:

mysql> grant all privileges on *.* to 'myuser'@'%' identified by 'mypassword' with grant option;
mysql> quit

Em seguida, efetue login como myuser

$ mysql -u myuser -p -h localhost

Tentar alterar a senha não causou erros, mas não fez nada por mim, então eu soltei e recriei o usuário root

mysql> drop user 'root'@'localhost;
mysql> mysql> grant all privileges on *.* to 'root'@'localhost' identified by 'mypassword' with grant option;

O usuário root agora está trabalhando com a nova senha


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.