Password di root mysql homebrew di MacOSX


116

Per qualche motivo MySQL ha smesso di concedere l'accesso per root. Disinstallato e reinstallato con Homebrew. Installazione fresca, tavoli freschi ma quando entro

mysql -u root -p

Ottengo questo errore:

Accesso negato per l'utente 'root' @ 'localhost' (utilizzando la password: NO)

Ho reinstallato MySQL cinque volte ma mi sta ancora chiedendo una password. Come lo risolvo?


C'è quasi una domanda esatta in superuser. Segui questi passaggi: superuser.com/a/400345
Icarus

13
Corri mysql_secure_installatione rispondi alle domande poste, semplici
Abhinav Singh

8
Il comando mysql_secure_installation richiede una password di root; se l'hai impostato e dimenticato, questa procedura non aiuta.
JohnG

1
Se birra installato MySQL 5.7, attenersi alla seguente procedura: stackoverflow.com/a/33924648/133106
mrucci

FWIW ha mysql -u rootlavorato qui ...
rogerdpack

Risposte:


115

Basta eseguire questo comando (dov'è la NEWPASStua password):

$(brew --prefix mysql)/bin/mysqladmin -u root password NEWPASS

Ho avuto lo stesso errore e l'ho risolto in questo modo.


16
Ha funzionato per me. Ovviamente (forse), il simbolo del dollaro ($) deve essere inserito come parte del comando (non è solo un prompt della shell).
piani cottura

3
Consiglierei di non includere NEWPASS nel comando per evitare di memorizzare nel file della cronologia della shell. Quel comando chiederà automaticamente l'input se lo esegui senza il passaggio, quindi non c'è motivo per farlo. :)
Levi Figueira

4
se si utilizza mariadb:$(brew --prefix mariadb)/bin/mysqladmin -u root password NEWPASS
bryceadams

8
Non funziona per me, con mariadb (anche con @bryceadams note): / usr / local / opt / mariadb / bin / mysqladmin: connettersi al server in errore "localhost": "Accesso negato per utente" root "@" localhost " '
trainoasis

3
per mariadb, se si ottiene l'accesso negato per l'utente:sudo $(brew --prefix mariadb)/bin/mysqladmin -u root password NEWPASS
upful

110

Nessuno di questi ha funzionato per me. Penso di aver già avuto mysql da qualche parte sul mio computer, quindi è stata impostata una password o qualcosa del genere. Dopo aver passato ore a provare ogni soluzione disponibile, questo è ciò che ha funzionato per me:

$ 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 -uroot

tutto merito a @Ghrua


6
i post precedenti non hanno funzionato per me, ma questo sebbene distruttivo ha funzionato alla grande.
Clay

1
una volta effettuato l'accesso a mysql, utilizzare ALTER USER 'root'@'localhost' IDENTIFIED BY 'YOURNEWPASSWORD';per impostare la nuova password di root.
Martin Braun

Questo ha funzionato per me senza eliminare il mio database esistente
Mwirabua Tim

Finalmente una soluzione di lavoro adeguata. @ 2020 MacOs catalina.
Mindaugas Kurlys,

Questo ha funzionato per me quando la soluzione precedente non funzionava. Grazie!
Les Brown,

65

Nel caso in cui tu abbia inavvertitamente impostato e dimenticato la password di root e non desideri cancellare tutti i tuoi database e ricominciare da capo perché sei pigro e hai dimenticato di avere una soluzione di backup in atto e stai utilizzando un'installazione Homebrew abbastanza recente (Inverno 2013), ecco i passaggi per reimpostare la password per MySQL.

Arresta l'istanza MySQL attualmente in esecuzione

launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

Ora avvia mysql a mano saltando le tabelle di concessione e il networking

$(brew --prefix mysql)/bin/mysqld_safe --skip-grant-tables --skip-networking

Nota che se quando esegui echo $ (brew --prefix mysql) e non risponde come "/ usr / local / opt / mysql" in bash, dovrai modificare il percorso di conseguenza.

Dopo averlo fatto, ora dovresti avere un'istanza MySQL in esecuzione e non protetta.

Accedi e imposta la password

mysql -u root

Al prompt, immettere il seguente comando MySQL per impostare una nuova password per l'utente interessato.

mysql> update mysql.user set password=PASSWORD('new_password_here') WHERE user='root';

Se tutto è andato secondo i piani dovrebbe dire:

Query OK, 1 row affected (0.02 sec)
Rows matched: 4  Changed: 1  Warnings: 0

Esci dal prompt di MySQL.

mysql> exit
Bye

Arresta server:

mysqladmin -u root shutdown

Ora, rimettiamo il demone di lancio in modo da avere di nuovo il nostro MySQL pronto:

launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

Congratulazioni. Hai appena reimpostato la tua password di root mysql. Versati un caffè e trova una soluzione di backup!


5
Per arrestare il server MySQL non protetto dopo aver cambiato la password:mysqladmin -u root shutdown
Vebjorn Ljosa

9
Mi sono appena imbattuto in questo problema e ho trovato questa risposta la più vicina. Ho notato che passwordnon era una colonna valida in mysql 5.7.9. Invece ho dovuto usare authentication_stringinvece. Il resto delle istruzioni ha funzionato perfettamente. Grazie!
M. Scott Ford

5
Come ha detto M. Scott Ford, il comando corretto è:update user set authentication_string=password('new_password_here') where user='root';
Panayotis

3
Ho dovuto correre update mysql.user set authentication_string=password('none') where user='root';perché funzionasse. (Mi piace il commento sopra di me, ma anteponi mysql.a user.)
Steve Meisner

2
la funzione password è stata rimossa da mysql 8.0.11. dettagli di più
chancyWu

62

Ho avuto lo stesso problema un paio di giorni fa. Succede quando installi mysqltramite homebrewed esegui lo script di inizializzazione ( mysql_install_db) prima di avviare il mysqldemone.

Per risolverlo, puoi eliminare mysqli file di dati, riavviare il servizio e quindi eseguire lo script di inizializzazione:

launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
rm -r /usr/local/var/mysql/
launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
unset TMPDIR
mysql_install_db --verbose --user=`whoami` --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp

ha funzionato perfettamente per me. In realtà non voglio impostare una password per la mia macchina locale, quindi le altre soluzioni non sono proprio quello che sto cercando
brad

3
mysql_install_db è deprecato, prendi in considerazione l'utilizzo dimysqld --initialize
Brian

1
Ottengo solo No such file or directoryquando eseguo il primo comando.
Agente Zebra

1
dopo aver eseguito il comando mysqld --initialize noterai nel messaggio di log sulla console che ha impostato la password temporanea per l'utente root .. copiala e usa la password per la prossima volta che lanci il comando "mysql -uroot -p" - Funzionerà sicuramente. . e poi mysql ti chiederà di reimpostare la password .. dai un'occhiata a dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html
Vikrant Labde

@VikrantLabde "Funzionerà sicuramente" - dichiarazione molto ambiziosa. Ho provato questo, ho usato la password temporanea che mi ha dato ma ancora non ha concesso l'accesso. Hai dovuto sfuggire a qualsiasi punteggiatura con una barra rovesciata?
Max Goodridge

47

Ho ricevuto questo errore dopo aver installato mysql tramite home brew.

Quindi prima rimuovi l'installazione. Quindi reinstallare tramite Homebrew

brew update
brew doctor
brew install mysql

Quindi riavvia il servizio mysql

 mysql.server restart

Quindi esegui questo comando per impostare la tua nuova password di root.

 mysql_secure_installation

Infine chiederà di ricaricare i privilegi. Dì di si. Quindi accedi di nuovo a mysql. E usa la nuova password che hai impostato.

mysql -u root -p

1
Questa è la soluzione perfetta. Avevo già provato a correre, mysql_secure_installationma la parte fondamentale eramysql.server restart
Johan

mysql_secure_installation era il pezzo chiave
Nik

Per evitare il mal di testa ... digita semplicemente usa il comando di riavvio come dice nirojan, quindi esegui mysql_secure_installation
Dan Zuzevich

13

Se corri

brew install mariadb
...
brew services start mariadb
==> Successfully started `mariadb` (label: homebrew.mxcl.mariadb)

 $(brew --prefix mariadb)/bin/mysqladmin -u root password newpass
/usr/local/opt/mariadb/bin/mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost''

anche il login con l'account di root fallisce:

mariadb -u root
ERROR 1698 (28000): Access denied for user 'root'@'localhost'

quindi l'utente amministratore predefinito viene creato con lo stesso nome del nome utente dell'account MacOS , ad esempio johnsmit .

Per accedere come root, emetti:

mariadb -u johnsmit
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 17
Server version: 10.4.11-MariaDB Homebrew

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

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

MariaDB [(none)]> exit
Bye

Il nome dell'account MacOS l'ha fatto per me.
Dan

posso aggiungere una password per l'utente nome account macos?
OrigamiEye


4

Ho appena notato qualcosa di comune alla maggior parte delle risposte qui e ho confermato la mia nuova installazione. In realtà è ovvio se guardi i consigli di cui eseguire mysqladmin -u rootsenza -p.

Nessuna password.

Brew imposta mysql solo con un utente root e nessuna password. Questo ha senso, immagino, ma gli avvertimenti post-installazione non lo menzionano affatto.


2
Ho avuto il problema di accesso negato supponendo che non ci fosse una password di root, quindi non penso che il problema sia ovvio.
Jack Frost

Non sto dicendo che il problema sia ovvio; per chiunque abbia utilizzato MySQL in circostanze normali è completamente confuso. Ma guardando le altre risposte, il motivo è chiaro.
Spyder

3

Prova con sudoper evitare l'errore "Accesso negato":

sudo $(brew --prefix mariadb)/bin/mysqladmin -u root password NEWPASS


3

Poiché la domanda è stata posta / risposta molto tempo fa, quelle risposte migliori non funzionano per me. Ecco la mia soluzione, nel 2020.

Sfondo : nuovo mysql / mariadb installato da homebrew.

Problema : la password per root non è vuota e sconosciuta.

La correzione :

  1. mysql -u TUO-SISTEMA-NOME UTENTE -p
  2. La password è vuota (premere invio)
  3. ALTER USER 'root' @ 'localhost' IDENTIFICATO DA 'NEW-ROOT-PASSWORD';
  4. PRIVILEGI DI FLUSH;

Il motivo :

  1. Homebrew creerà un utente con privilegi di root denominato dal nome utente MacOS corrente.
  2. non ha password
  3. Poiché ha tutti i privilegi, reimposta la password di root con quell'utente.
  4. La password iniziale per root è stata generata in modo casuale.

2020 risposta corretta. Non riesco a chiedere una password per il nome utente MacOS
OrigamiEye

2
  1. vai all'icona della mela -> preferenze di sistema
  2. apri Mysql
  3. in alcuni casi vedrai "inizializza database"
  4. cliccaci sopra
  5. ti verrà chiesto di impostare la password per root -> imposta lì una password complessa
  6. usa quella password per accedere a mysql dalla prossima volta

Spero che questo ti aiuti.


Modo semplice e facile. Grazie.
Ezequiel França

1

L'esecuzione di queste linee nel terminale ha funzionato per me e molti altri che avevano lo stesso problema. Queste istruzioni sono elencate nel terminale dopo che brew ha installato con successo mysql.

mkdir -p ~/Library/LaunchAgents

cp /usr/local/Cellar/mysql/5.5.25a/homebrew.mxcl.mysql.plist ~/Library/LaunchAgents/

launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

/usr/local/Cellar/mysql/5.5.25a/bin/mysqladmin -u root password 'YOURPASSWORD'

dov'è YOURPASSWORDla password per root.


Ottengo solo No such file or directoryquando eseguo questi comandi
Agente Zebra

1

Verifica di non avere un .my.cnf nascosto nel tuo homedir. Questo era il mio problema.


1

Questo ha funzionato per me per MAC https://flipdazed.github.io/blog/osx%20maintenance/set-up-mysql-osx

Avvia mysql eseguendo

i servizi di infusione avviano mysql

Esegui lo script di installazione

mysql_secure_installation

Ti verrà chiesto di configurare un plug-in CONVALIDA PASSWORD. Inserisci y per farlo.

Seleziona la convalida della password richiesta (non importa se sei solo tu a utilizzare il database)

Ora seleziona y per tutte le opzioni rimanenti: Rimuovi anon. gli utenti; non consentire accessi root remoti; rimuovere il database di test; ricaricare le tabelle dei privilegi. Ora dovresti ricevere un messaggio di

All done!



1

Questo ha funzionato per me. Spero che funzioni anche per te !!! Seguiteli.

brew services stop mysql
pkill mysqld
# NB: the following command will REMOVE all your databases!
# Make sure you have backups or SQL dumps if you have important data in them already.
rm -rf /usr/local/var/mysql/
brew services restart mysql

mysql -uroot
UPDATE mysql.user SET authentication_string=null WHERE User='root';
FLUSH PRIVILEGES;
exit;

mysql -u root 
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password 
BY'YOUR_PASS_WORD!!!!';

2
Devi avvertire che, l'esecuzione del rm -rf /usr/local/var/mysql/comando cancellerà tutti i database e i dati Mysql sul tuo computer!
Lashae

0

La password predefinita quando installi mysql tramite brew è root, prova, per me ha funzionato

mysql -uroot -proot


1
Da brew info mysql: abbiamo installato il tuo database MySQL senza una password di root. Per proteggerlo, eseguire: mysql_secure_installation
ssc

@ssc Il modo migliore per impostare una password su un'installazione pulita.
alexventuraio

0

Terminale 1:

$ mysql_safe

Terminale 2:

$ mysql -u root
mysql> UPDATE mysql.user SET Password=PASSWORD('new-password') WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> quit

Potrebbe aver funzionato nel momento in cui la risposta è stata pubblicata, ma nel frattempo non funzionava; con la versione (attuale) di MySQL 5.7.21, fallisce con "Colonna sconosciuta" Password "in" elenco campi ".
ssc

AGGIORNAMENTO mysql.user SET authentication_string = PASSWORD ('xxxxxx!') WHERE User = 'root';
kevinc

0

Sto usando Catalina e uso questo mysql_secure_installationcomando e ora funziona per me:

$ mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none): << enter root here >>

inserisco rootcome password corrente

OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

e fai il resto


0

Quindi, nel caso in cui qualcuno avesse la stessa situazione e configurazione che avevo io e stesse per impazzire, questo ha funzionato per me .

Dopo una lunga storia avevo una MariaDB installata su brew che continuava a riavviarsi automaticamente quando ne terminavo il processo (questo era opera di brew), che aveva una password di root, che non conoscevo.

$ brew services list

Questo mostra qualcosa come:

mariadb started jdoe /path/to/homebrew.mxcl.mariadb.plist

Arresta il server MySQL con:

$ brew services stop mariadb

Quindi riavvialo senza l'utente root (e senza usare brew):

$ mariadbd --skip-grant-tables &

Qui, mysql_secure_installationnon ha funzionato per me a causa di --skip-grant-tables, e non avrebbe funzionato senza --skip-grant-tablesperché aveva bisogno della password (che non avevo).
Il tentativo $(brew --prefix mysql)/bin/mysqladmin -u root password hunter2restituiva solo strani errori e non faceva nulla;$(brew --prefix mariadb)/bin/mysqladmin -u root password hunter2inoltre non ha funzionato, ha fornito errori diversi e suggerimenti che non hanno funzionato per me.

Ma puoi accedere a mysql ora senza credenziali:$ mysql

Qui, il vecchio metodo di aggiornamento della tabella utente per root non funziona perché "La colonna" Password "non è aggiornabile".
Il nuovo metodo utilizza alter userMA funziona solo dopo averlo fatto flush privileges;, fallo prima.
Quindi:
MariaDB [(none)]> alter user 'root'@'localhost' identified by 'hunter2';
(qui MariaDB [(none)]>c'è il prompt di MySQL)
Quindi fallo di flush privileges;nuovo.
Esci dal client MySQL.

Ora, per quanto riguarda la birra, MariaDB non è ancora in esecuzione, quindi usa $ ps aux | grep -i mariadb per trovare il pid e $ kill -9 <pid>questo.
Quindi utilizzare $ brew services start mariadbper riavviarlo.


-1

Usa il file init per avviare mysql per cambiare la password di root.

brew services stop mysql
pkill mysqld
echo "ALTER USER 'root'@'localhost' IDENTIFIED BY 'newRootPass';" > /tmp/mysql-init
$(brew --prefix mysql)/bin/mysqld --init-file=/tmp/mysql-init

La tua password di root è ora cambiata. Assicurati di spegnere correttamente il server per salvare la modifica della password. Nella nuova finestra del terminale eseguire

mysqladmin -u root -p shutdown

e inserisci il tuo nuovo pass.

Avvia il servizio e rimuovi il file init

brew services start mysql
rm /tmp/mysql-init

Testato su mysql versione 8.0.19

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.