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?

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';


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 :)

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

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


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

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';


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.


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

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

Muito obrigada. Eu estava lutando com isso por um tempo. Isso é algo novo nas versões mais recentes do mysql?
Jpbourbon



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)


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.


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'

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';


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';

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.

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


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 :


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


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

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.

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.