Definindo a senha do usuário root do MySQL no OS X

235

Acabei de instalar o MySQL no Mac OS X. O próximo passo foi definir a senha do usuário root, então fiz o seguinte:

  1. Inicie o aplicativo de terminal para acessar a linha de comando do Unix.
  2. Sob o prompt do Unix, executei estes comandos:

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

Mas quando executo o comando

$ ./mysql -u root, esta é a resposta:

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 224
Server version: 5.5.13 MySQL Community Server (GPL)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

Eu posso entrar na mysqllinha de comando sem nenhuma senha!

Por que é isso?

madaura
fonte

Respostas:

320

Experimente o comando FLUSH PRIVILEGESao fazer login no terminal MySQL. Se isso não funcionar, tente o seguinte conjunto de comandos enquanto estiver no terminal MySQL

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

Mude NEWPASSWORD com a senha que desejar. Deve estar tudo pronto!

Atualização : A partir do MySQL 5.7, o passwordcampo foi renomeado authentication_string. Ao alterar a senha, use a seguinte consulta para alterar a senha. Todos os outros comandos permanecem os mesmos:

mysql> UPDATE user SET authentication_string=PASSWORD("NEWPASSWORD") WHERE User='root';

Atualização : na 8.0.15 (talvez já antes dessa versão) a função PASSWORD () não funciona, conforme mencionado nos comentários abaixo. Você tem que usar:

UPDATE mysql.user SET authentication_string='password' WHERE User='root';

Scott
fonte
24
No MySQL 5.7 em diante, o nome da coluna mudou. Você precisará usar UPDATE mysql.user SET authentication_string=PASSWORD('password') WHERE User='root';.
Carlos P
Obrigado pela atenção. Vou editar minha resposta para refletir adequadamente.
Scott
8
Também parece que a função PASSWORD () foi descontinuada e você deve colocar o 'password'lado direito da igualdade #
181
6
Se você não pode fazer login, como isso ajuda?
Jake N
11
depois de seguir estes passos. Quando tentei entrar novamente com a minha nova senha, recebo #ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
171719
197

Se você não se lembra da senha definida para raiz e precisa redefini-la, siga estas etapas:

  1. Pare o servidor mysqld, isso varia por instalação
  2. Execute o servidor no modo de segurança com desvio de privilégio

sudo mysqld_safe --skip-grant-tables;

  1. Em uma nova janela, conecte-se ao banco de dados, defina uma nova senha e libere as permissões e saia:

mysql -u root

Para o MySQL mais antigo que o MySQL 5.7, use:

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

Para o MySQL 5.7+, use:

USE mysql;

UPDATE mysql.user SET authentication_string=PASSWORD("your-password") WHERE User='root';

Atualizar e sair:

FLUSH PRIVILEGES;

\q

  1. Pare o servidor no modo de segurança e inicie seu servidor normal novamente. A nova senha deve funcionar agora. Caiu como uma luva para mim :)
Radtek
fonte
4
Perfeito, obrigado! No Mac OSx Mavericks (2014), use sudo / Library / StartupItems / MySQLCOM / MySQLCOM stop | start | restart
Chris Adams
2
passwordprecisa ser authentication_stringagora.
Zx1986
Depois do MySQL 5.7, deveria ser UPDATE user SET authentication_string=PASSWORD("NEWPASSWORD") WHERE User='root';, assim como o @Scott disse.
Zx1986
Graças acrescentar que
radtek
1
Em MacOSX quando o MySQL é instalado com o "Preferências 'Painel' opção (Menu Apple -> Preferências do Sistema ...), eu descobri que eu tinha primeiro que mySQL parar de usar painel de preferências para concluir a etapa 1 do acima usando. sudo killNão trabalho como o Mac OSX iria relançar automaticamente uma nova msql instantaneamente uma vez eu parei mysql usando painel de preferências, eu poderia executar manualmente.mysqld_safe --skip-grant-tables
toddcscar
85

Depois de instalar o MySQL, você precisará estabelecer a senha "root". Se você não estabelecer uma senha root, então, não haverá senha root e não precisará de uma senha para efetuar login.

Então, dito isso, você precisa estabelecer uma senha root.

Usando o terminal, digite o seguinte:

Instalação: Defina a senha do usuário root:

/usr/local/mysql/bin/mysqladmin -u root password NEW_PASSWORD_HERE

Se você cometeu um erro ou precisa alterar a senha root, use o seguinte:

Alterar senha de root:

cd /usr/local/mysql/bin/
./mysql -u root -p
> Enter password: [type old password invisibly]

use mysql;
update user set password=PASSWORD("NEW_PASSWORD_HERE") where User='root';
flush privileges;
quit
prumo
fonte
5
Para aqueles que têm MySQL 5.7, você deve usar update user set authentication_string=PASSWORD("NEW_PASSWORD_HERE") where User='root';em vez de usarset password=...
pdm
66

As instruções fornecidas no site mysql são tão claras que as mencionadas acima

  1. $ sudo /usr/local/mysql/support-files/mysql.server stop
  2. $ sudo /usr/local/mysql/support-files/mysql.server start --skip-grant-tables
  3. /usr/local/mysql/bin/mysql
  4. mysql> PRIVILÉGIOS DE FLUSH;
  5. mysql> ALTER USUÁRIO 'root' @ 'localhost' IDENTIFICADO POR 'MyNewPass';
  6. mysql> exitou Ctrl + z
  7. $ sudo /usr/local/mysql/support-files/mysql.server stop
  8. $ sudo /usr/local/mysql/support-files/mysql.server start
  9. /usr/local/mysql/support-files/mysql -u root -p
  10. Digite a nova senha, ou seja, MyNewPass

Referência: http://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html

Ankireddy Polu
fonte
2
no mac os 10.12.6, ocorre um erro após o 2º comando ERRO! O servidor saiu sem atualizar o arquivo PID (/usr/local/mysql/data/myhostname.pid).
diEcho
Obrigado por apontar onde encontrar a documentação. É um pouco confuso no mac quando você também pode usar o sudo launchctl unload -F /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist e o sudo launchctl unload -F /Library/LaunchDaemons/com.oracle.oss .mysql.mysqld.plist para parar e iniciar o mysql. Usar o comando sudo /usr/local/mysql/support-files/mysql.server parece uma abordagem melhor.
Daniel
59
  1. Pare o servidor mysqld.

    • Mac OSX: System Preferences > MySQL>Stop MySQL Server
    • Linux (do terminal): sudo systemctl stop mysqld.service
  2. Inicie o servidor no modo de segurança com desvio de privilégio

    • Do terminal: sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables
  3. Em uma nova janela do terminal:

    • sudo /usr/local/mysql/bin/mysql -u root
  4. Isso abrirá a linha de comando do mysql. A partir daqui, digite:

    • UPDATE mysql.user SET authentication_string=PASSWORD('NewPassword') WHERE User='root';

    • FLUSH PRIVILEGES;

    • quit

  5. Pare o servidor mysqld novamente e reinicie-o no modo normal.

    • Mac OSX (do terminal): sudo /usr/local/mysql/support-files/mysql.server restart
    • Terminal Linux: sudo systemctl restart mysqld
imbond
fonte
1
Para executar 5.7.23 no High Sierra, isso funciona perfeitamente. Obrigado.
Daniel
No MySQL 8.0.11, a função set na quarta etapa foi removida. Você confere aqui, este é trabalhado. stackoverflow.com/a/52579886/621951
Günay Gültekin
22

Para o novo Mysql 5.7, por algum motivo, os comandos bin do Mysql não estão anexados ao shell:

  1. Reinicie o Mac após a instalação.

  2. Inicie o Mysql:

    Preferências do Sistema> Mysql> botão Iniciar

  3. Vá para a pasta de instalação do Mysql no terminal:

    $ cd /usr/local/mysql/bin/

  4. Acesso ao Mysql:

    $ ./mysql -u root -p

e digite a senha inicial dada à instalação.

  1. No terminal Mysql, altere a senha:

    mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPassword';

Deoxyseia
fonte
16

No terminal, escreva mysql -u root -pe pressione Return. Digite a senha atual do mysql que você deve ter anotado. E defina a senha SET PASSWORD = PASSWORD('new_password');

Consulte esta documentação aqui para obter mais detalhes.

Nitish Pareek
fonte
10

Se você esqueceu a senha root do MySQL, não consegue se lembrar ou deseja invadir ... .. você pode redefinir a senha do banco de dados mysql na linha de comando no Linux ou OS X, desde que saiba a senha de usuário root da caixa você está em:

(1) Pare o MySQL

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

(2) Inicie no modo de segurança:

sudo mysqld_safe --skip-grant-tables

(3) 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

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

No comando UPDATE acima, basta substituir a 'senha' por sua própria nova senha, certifique-se de manter as aspas

(4) Economize e bastante

FLUSH PRIVILEGES;

\q

(5) Inicie o MySQL

sudo /usr/local/mysql/support-files/mysql.server start
Homam Bahrani
fonte
5

Quando instalei o OS X Yosemite, tive um problema com o Mysql. Eu tentei muitos métodos, mas nenhum funcionou. Na verdade, encontrei uma maneira bastante fácil. Experimente isso.

  1. Primeiro faça o login no terminal a partir de su privilégios.

sudo su

  1. pare o mysql

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

  1. inicie no modo de segurança:

sudo mysqld_safe --skip-grant-tables

  1. abra outro terminal, faça o login com privilégios su, faça o login no mysql sem senha

mysql -u root

  1. mude a senha

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

  1. privilégios de liberação

FLUSH PRIVILEGES;

  1. Você terminou agora
Prem Timsina
fonte
Muito obrigada. Eu estava lutando com isso por um tempo. Isso é algo novo nas versões mais recentes do mysql?
Jpbourbon
5

Os métodos mencionados nas respostas existentes não funcionam no mysql 5.7.6 ou posterior. De acordo com a documentação do mysql, esta é a maneira recomendada.

B.5.3.2.3 Redefinindo a senha root: instruções genéricas

MySQL 5.7.6 e posterior:

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

Referência: https://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html

Imtiaz Shakil Siddique
fonte
3

Se você não se lembra da sua senha, a resposta do @ radtek funcionou para mim, exceto no meu caso, eu configurei o MySQL usando o brew, o que significa que as etapas 1 e 2 da resposta dele devem ser alteradas para:

  1. /usr/local/bin/mysql.server stop

  2. /usr/local/bin/mysqld_safe --skip-grant-tables

Nota: a falta de sudo.

schminnie
fonte
3

Eu acho que isso deve funcionar :

ALTER USER 'root'@'localhost' IDENTIFIED BY 'YOURNEWPASSWORD'

(Observe que você provavelmente deve substituir root por seu nome de usuário, se não for root)

ferrugem
fonte
2

Parando o servidor MySQL

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

Iniciando o MySQL no modo de segurança

sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables &

Alterando a senha root

/usr/local/mysql/bin/mysql -u root

use mysql;
UPDATE user SET authentication_string=PASSWORD('NEW_PASSWORD') WHERE user='root';
FLUSH PRIVILEGES;
exit

Teste

Corre /usr/local/mysql/bin/mysql -u root

Agora digite a nova senha para começar a usar o MySQL.

Shreyas
fonte
2

Isto é o que exatamente funcionou para mim:

  1. Verifique se nenhum outro processo MySQL está em execução. Para verificar isso, faça o seguinte:

     a.From the terminal, run this command:
           lsof -i:3306 
       If any PID is returned, kill it using kill -9 PID
     b. Go To System Preferences > MySQL > check if any MySQL instances 
        are running, stop them.
  2. Inicie o MySQL com o comando:

    sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables
  3. A senha para cada usuário é armazenada na tabela mysql.user nas colunas User e authentication_string, respectivamente. Podemos atualizar a tabela como:

    UPDATE mysql.user SET authentication_string='your_password' where User='root'
sgs
fonte
2

macOS 10.14+ com 5.7.26 instalado a partir do instalador do Mac OSX DMG.

Ao tentar usar o comando UPDATE publicado por outros usuários, resulta no seguinte erro:

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

Copie a senha que lhe foi apresentada pelo terminal aberto do Instalador e faça o seguinte:

mysql -uroot -p
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YOURPASSWORDHERE';

fonte
2

Tente isso no terminal: /usr/local/bin/mysql_secure_installation

Jean-Luc Barat
fonte
2

Para referenciar o MySQL 8.0.15 +, a função password () não está disponível. Use o comando abaixo.

Por favor, use

UPDATE mysql.user SET authentication_string='password' WHERE User='root';
Saurabh Verma
fonte
1

Se você esqueceu sua senha ou deseja alterá-la para seu mysql:

  1. inicie seu terminal e digite:
sudo su
  1. Digite o passe para seu sistema
  2. Pare seu mysql:
sudo /usr/local/mysql/support-files/mysql.server stop
  1. Deixe essa janela ABERTA, execute a segunda janela do terminal e entre aqui:
mysql -u root
  1. E mude sua senha para mysql:
UPDATE mysql.user SET authentication_string=PASSWORD('new_password') WHERE User='root';

onde "new_password" - seu novo passe. Você não precisa de um passe antigo para o mysql.

  1. Liberar, sair e verificar seu novo passe:
FLUSH PRIVILEGES;
  1. Feche todas as janelas e verifique seu novo passe para o mysql. Boa sorte.
Alexander Yushko
fonte
1

Muita coisa mudou para o MySQL 8. Encontrei a seguinte modificação da documentação do MySQL 8.0 "Como redefinir a senha raiz" funciona com o Mac OS X.

Crie um arquivo temporário $HOME/mysql.root.txtcom o SQL para atualizar a senha raiz:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<new-password>';

Isso é usado mysql_native_passwordpara evitar que o plug-in de autenticação 'caching_sha2_password' não possa ser carregado com erro, que eu recebo se omitir a opção.

Pare o servidor, comece com uma --init-fileopção para definir a senha root e, em seguida, reinicie o servidor:

mysql.server stop mysql.server start --init-file=$HOME/mysql.root.txt mysql.server stop mysql.server start

djb
fonte
1

Vamos adicionar esta solução alternativa que funciona no meu laptop!

Mac com Osx Mojave 10.14.5

Mysql 8.0.17 foi instalado com homebrew

  • Eu executo o seguinte comando para localizar o caminho do mysql

    brew info mysql

  • Depois que o caminho é conhecido, eu executo o seguinte:

    /usr/local/Cellar/mysql/8.0.17/bin/mysqld_safe --skip-grant-table

  • Em outro terminal, eu corro:

    mysql -u root

  • Dentro desse terminal, mudei a senha root usando:

    update mysql.user set authentication_string='NewPassword' where user='root';

  • e para terminar eu corro:

    FLUSH PRIVILEGES;

E pronto, a senha foi redefinida.

Referências :

Espoir Murhabazi
fonte
1

Você pode desativar manualmente o mysql no Mac, clicando no menu Apple e abrir Preferências do Sistema. Escolha o painel de preferências "MySQL" e clique no botão "Stop MySQL Server" para parar o MySQL Server no Mac.

Depois de parar o mysql, você precisará seguir estas etapas.

  • Você precisará iniciar o mysql no modo skip-grant-tables

$ sudo /usr/local/mysql/support-files/mysql.server start --skip-grant-tables

  • No seu próprio terminal, digite este comando para DESCARREGAR PRIVILÉGIOS existentes

/ usr / local / mysql / bin / mysql mysql> PRIVILÉGIOS DE FLUSH;

  • Agora você precisa alterar a senha do usuário

mysql> ALTER USUÁRIO 'root' @ 'localhost' IDENTIFICADO POR 'newpassword';

mysql> exit

Depois, você pode ir para o menu Apple e abrir Preferências do Sistema. Escolha o painel de preferências "MySQL" e clique no botão "Stop MySQL Server" para parar o MySQL Server no Mac.

Finalmente, você pode novamente ir para o menu Apple e abrir Preferências do Sistema. Escolha o painel de preferências “MySQL” e clique no botão “Start MySQL Server” para iniciar o MySQL Server no Mac.

espero que ajude

Siddhartha Thota
fonte
1

Nenhum dos comentários anteriores resolve o problema no meu Mac. Eu usei os comandos abaixo e funcionou.

$ brew services stop mysql
$ pkill mysqld
$ rm -rf /usr/local/var/mysql/ # NOTE: this will delete your existing database!!!
$ brew postinstall mysql
$ brew services restart mysql
$ mysql -u root
Thiago Farias
fonte
0
mysqld_safe --skip-grant-tables
mysql -u root
UPDATE mysql.user SET authentication_string='yourpasswd' WHERE User='root';
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'yourpasswd';

De alguma forma, preciso fazer isso toda vez que meu Macbook for reiniciado. Postando isso para referência pessoal, espero que ajude outra pessoa também.

Lafeber
fonte