Impostazione della password dell'utente root di MySQL su OS X


235

Ho appena installato MySQL su Mac OS X. Il passo successivo è stato impostare la password dell'utente root, quindi l'ho fatto dopo:

  1. Avviare l'app del terminale per accedere alla riga di comando Unix.
  2. Al prompt di Unix ho eseguito questi comandi:

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

Ma, quando eseguo il comando

$ ./mysql -u root, questa è la risposta:

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>

Posso accedere alla mysqlriga di comando senza alcuna password!

Perchè è questo?

Risposte:


320

Prova il comando FLUSH PRIVILEGESquando accedi al terminale MySQL. Se non funziona, prova il seguente set di comandi mentre sei nel terminale MySQL

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

Cambia NEWPASSWORD con qualsiasi password tu voglia. Dovrebbe essere tutto pronto!

Aggiornamento : a partire da MySQL 5.7, il passwordcampo è stato rinominato authentication_string. Quando si modifica la password, utilizzare la seguente query per modificare la password. Tutti gli altri comandi rimangono gli stessi:

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

Aggiornamento : su 8.0.15 (forse già prima di quella versione) la funzione PASSWORD () non funziona, come menzionato nei commenti qui sotto. Devi usare:

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


24
In MySQL 5.7 in poi, il nome della colonna è cambiato. Dovrai UPDATE mysql.user SET authentication_string=PASSWORD('password') WHERE User='root';invece utilizzare .
Carlos P,

Grazie per il testa a testa. Modificherò la mia risposta per riflettere di conseguenza.
Scott,

8
Sembra anche che la funzione PASSWORD () sia obsoleta e dovresti semplicemente mettere il 'password'lato destro dell'uguaglianza
kvn

6
Se non riesci ad accedere, come può essere d'aiuto?
Jake N,

11
dopo aver seguito questi passaggi. Quando ho provato ad accedere di nuovo con la mia nuova password ho ricevutoERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
Þaw

197

Se non ricordi la password impostata per root e devi reimpostarla, procedi nel seguente modo:

  1. Arresta il server mysqld, questo varia a seconda dell'installazione
  2. Esegui il server in modalità provvisoria con bypass privilegi

sudo mysqld_safe --skip-grant-tables;

  1. In una nuova finestra connettiti al database, imposta una nuova password e scarica le autorizzazioni ed esci:

mysql -u root

Per MySQL precedente a MySQL 5.7 utilizzare:

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

Per MySQL 5.7+ utilizzare:

USE mysql;

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

Aggiorna ed esci:

FLUSH PRIVILEGES;

\q

  1. Arrestare il server in modalità provvisoria e riavviare il server normale. La nuova password dovrebbe funzionare ora. Ha funzionato benissimo per me :)

4
È stato perfetto grazie! Su Mac OSx Mavericks (2014) usa sudo / Library / StartupItems / MySQLCOM / MySQLCOM stop | start | restart
Chris Adams,

2
passwordbisogno di essere authentication_stringora.
zx1986,

Dopo MySQL 5.7, dovrebbe essere UPDATE user SET authentication_string=PASSWORD("NEWPASSWORD") WHERE User='root';, proprio come ha detto @Scott.
zx1986,

Grazie aggiungerò che
Radtek

1
Su MacOSX quando MySQL viene installato con il "Preference 'Pane' l'opzione (Menu Apple -> Preferenze di Sistema ...), ho scoperto che ho dovuto smettere di MySQL utilizzando il pannello delle preferenze per completare il passaggio 1 della sopra utilizzando. sudo killNon l'ha fatto funziona come Mac OSx riavvierebbe automaticamente un nuovo msql all'istante. Una volta che ho smesso di mysql utilizzando il pannello delle preferenze, ho potuto eseguire manualmentemysqld_safe --skip-grant-tables
toddcscar

85

Una volta installato MySQL, dovrai stabilire la password "root". Se non si stabilisce una password di root, quindi, non esiste una password di root e non è necessaria una password per accedere.

Quindi, detto questo, è necessario stabilire una password di root.

Utilizzando il terminale inserire quanto segue:

Installazione: imposta la password dell'utente root:

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

Se hai commesso un errore o devi modificare la password di root, utilizza quanto segue:

Cambia password di 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
Per coloro che hanno MySQL 5.7, dovresti usare update user set authentication_string=PASSWORD("NEW_PASSWORD_HERE") where User='root';invece di usareset password=...
pdm

66

Le istruzioni fornite nel sito Web mysql sono molto chiare rispetto a quelle sopra menzionate

  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> FLUSH PRIVILEGES;
  5. mysql> ALTER USER 'root' @ 'localhost' IDENTIFICATO DA 'MyNewPass';
  6. mysql> exito 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. Immettere la nuova password, ad esempio MyNewPass

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


2
in mac os 10.12.6, dà un errore dopo il 2o comando ERRORE! Il server si è chiuso senza aggiornare il file PID (/usr/local/mysql/data/myhostname.pid).
diEcho,

Grazie per aver indicato dove trovare la documentazione. È un po 'confuso sul Mac quando puoi anche usare sudo launchctl unload -F /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist e sudo launchctl unload -F /Library/LaunchDaemons/com.oracle.oss .mysql.mysqld.plist per arrestare e avviare mysql. L'uso di sudo /usr/local/mysql/support-files/mysql.server stop sembra un approccio migliore.
Daniel,

59
  1. Arresta il server mysqld.

    • Mac OSX: System Preferences > MySQL>Stop MySQL Server
    • Linux (dal terminale): sudo systemctl stop mysqld.service
  2. Avviare il server in modalità provvisoria con bypass privilegi

    • Dal terminal: sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables
  3. In una nuova finestra del terminale:

    • sudo /usr/local/mysql/bin/mysql -u root
  4. Questo aprirà la riga di comando mysql. Da qui inserire:

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

    • FLUSH PRIVILEGES;

    • quit

  5. Arrestare di nuovo il server mysqld e riavviarlo in modalità normale.

    • Mac OSX (dal terminale): sudo /usr/local/mysql/support-files/mysql.server restart
    • Terminale Linux: sudo systemctl restart mysqld

1
Per eseguire 5.7.23 su High Sierra, questo funziona perfettamente. Grazie.
Daniel,

In MySQL 8.0.11, la funzione set nel 4 ° passaggio è stata rimossa. Controlla qui, questo è funzionato. stackoverflow.com/a/52579886/621951
Günay Gültekin

22

Per il nuovo Mysql 5.7 per qualche motivo i comandi bin di Mysql non sono collegati alla shell:

  1. Riavvia il Mac dopo l'installazione.

  2. Inizia Mysql:

    Preferenze di Sistema> Mysql> Pulsante Start

  3. Vai alla cartella di installazione di Mysql nel terminale:

    $ cd /usr/local/mysql/bin/

  4. Accesso a Mysql:

    $ ./mysql -u root -p

e inserisci la password iniziale assegnata all'installazione.

  1. Nel terminale Mysql cambia password:

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


16

Nel terminale, scrivi mysql -u root -pe premi Invio. Immettere la password mysql corrente che è necessario aver annotato. E imposta la password SET PASSWORD = PASSWORD('new_password');

Fare riferimento a questa documentazione qui per maggiori dettagli.


10

Se hai dimenticato la password di root di MySQL, non ricordi o vuoi entrare ... ... puoi reimpostare la password del database mysql dalla riga di comando in Linux o OS X fintanto che conosci la password dell'utente root della casella siete su:

(1) Ferma MySQL

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

(2) Avviarlo in modalità provvisoria:

sudo mysqld_safe --skip-grant-tables

(3) Questo sarà un comando in corso fino al termine del processo, quindi apri un'altra finestra shell / terminale , accedi senza una password:

mysql -u root

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

Nel comando UPDATE sopra, basta sostituire la 'password' con la propria nuova password, assicurarsi di mantenere le virgolette

(4) Salva e abbastanza

FLUSH PRIVILEGES;

\q

(5) Avviare MySQL

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

5

Quando ho installato OS X Yosemite, ho avuto problemi con Mysql. Ho provato molti metodi ma nessuno ha funzionato. In realtà ho trovato un modo abbastanza semplice. Prova questo.

  1. Primo terminale di accesso da privilegi su.

sudo su

  1. basta mysql

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

  1. avviare in modalità provvisoria:

sudo mysqld_safe --skip-grant-tables

  1. aprire un altro terminale, accedere come privilegi di su, accedere a mysql senza password

mysql -u root

  1. cambia la password

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

  1. privilegi di scarico

FLUSH PRIVILEGES;

  1. Hai finito adesso

Grazie mille. Ho lottato con questo per un po '. È una novità sulle ultime versioni di mysql?
jpbourbon,



3

Penso che dovrebbe funzionare:

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

(Nota che probabilmente dovresti sostituire root con il tuo nome utente se non è root)


2

Arresto del server MySQL

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

Avvio di MySQL in modalità provvisoria

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

Modifica della password di root

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

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

analisi

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

Ora inserisci la nuova password per iniziare a utilizzare MySQL.


2

Questo è ciò che ha funzionato esattamente per me:

  1. Assicurati che nessun altro processo MySQL sia in esecuzione. Per verificare, procedi come segue:

     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. Avviare MySQL con il comando:

    sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables
  3. La password per ogni utente è memorizzata nella tabella mysql.user rispettivamente nelle colonne User e authentication_string. Possiamo aggiornare la tabella come:

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

2

macOS 10.14+ con 5.7.26 installato dal programma di installazione DMG per Mac OSX.

Quando si tenta di utilizzare il comando UPDATE inviato da altri utenti, si verifica il seguente errore:

ERRORE 1820 (HY000): è necessario reimpostare la password utilizzando l'istruzione ALTER USER prima di eseguire questa istruzione.

Copia la password che ti è stata presentata dal terminale aperto del programma di installazione ed effettua le seguenti operazioni:

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


2

Per fare riferimento a MySQL 8.0.15 +, la funzione password () non è disponibile. Usa il comando qui sotto.

Si prega di usare

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

1

Se hai dimenticato la password o vuoi cambiarla nel tuo mysql:

  1. avvia il tuo terminale ed inserisci:
sudo su
  1. Inserisci pass per il tuo sistema
  2. Ferma il tuo mysql:
sudo /usr/local/mysql/support-files/mysql.server stop
  1. Lascia questa finestra APERTA, avvia la seconda finestra del terminale ed entra qui:
mysql -u root
  1. E cambia la tua password per mysql:
UPDATE mysql.user SET authentication_string=PASSWORD('new_password') WHERE User='root';

dove "new_password" - il tuo nuovo pass. Non hai bisogno del vecchio pass per mysql.

  1. Lavare, uscire e controllare il nuovo pass:
FLUSH PRIVILEGES;
  1. Chiudi tutte le finestre e controlla il tuo nuovo pass per mysql. In bocca al lupo.

1

Molto è cambiato per MySQL 8. Ho trovato la seguente modifica della documentazione "Come reimpostare la password di root" di MySQL 8.0 funziona con Mac OS X.

Creare un file temporaneo $HOME/mysql.root.txtcon SQL per aggiornare la password di root:

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

Questo mysql_native_passwordper evitare che il plug-in di autenticazione 'caching_sha2_password' non possa essere caricato errore, che ottengo se ometto l'opzione.

Arrestare il server, iniziare con --init-fileun'opzione per impostare la password di root, quindi riavviare il server:

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


1

Aggiungiamo questa soluzione alternativa che funziona sul mio laptop!

Mac con Osx Mojave 10.14.5

Mysql 8.0.17 è stato installato con homebrew

  • Eseguo il seguente comando per individuare il percorso di mysql

    brew info mysql

  • Una volta che il percorso è noto, eseguo questo:

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

  • In un altro terminale corro:

    mysql -u root

  • All'interno di quel terminale, ho cambiato la password di root usando:

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

  • e per finire corro:

    FLUSH PRIVILEGES;

E voilà la password è stata ripristinata.

Riferimenti :


1

Puoi disattivare manualmente mysql su Mac, facendo clic su  menu Apple e apri Preferenze di Sistema. Scegli il pannello delle preferenze "MySQL", quindi fai clic sul pulsante "Arresta MySQL Server" per arrestare MySQL Server su Mac.

Dopo aver interrotto il tuo mysql dovrai seguire questi passaggi.

  • Dovrai avviare mysql in modalità skip-grant-tables

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

  • Nel tuo stesso terminale, inserisci questo comando per FLUSH PRIVILEGES esistenti

/ usr / local / mysql / bin / mysql mysql> PRIVILEGI DI FLUSH;

  • Ora devi modificare la password dell'utente

mysql> ALTER USER 'root' @ 'localhost' IDENTIFICATO DA 'newpassword';

mysql> esci

Quindi puoi andare al menu  Apple e aprire Preferenze di Sistema. Scegli il pannello delle preferenze "MySQL", quindi fai clic sul pulsante "Arresta MySQL Server" per arrestare MySQL Server su Mac.

Finalmente puoi di nuovo andare su  menu Apple e aprire Preferenze di Sistema. Scegli il pannello delle preferenze "MySQL", quindi fai clic sul pulsante "Avvia MySQL Server" per avviare MySQL Server su Mac.

spero che aiuti


1

Nessuno dei precedenti commenti risolve il problema sul mio Mac. Ho usato i comandi seguenti e ha funzionato.

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

In qualche modo ho bisogno di farlo ogni volta che il mio Macbook si riavvia. Pubblicando questo come riferimento personale, si spera che aiuti anche qualcun altro.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.