Hasło roota mysql homebrew MacOSX


116

Z jakiegoś powodu MySQL przestał udzielać dostępu rootowi. Odinstalowano i ponownie zainstalowano z Homebrew. Świeża instalacja, świeże stoły, ale kiedy wchodzę

mysql -u root -p

Otrzymuję ten błąd:

Odmowa dostępu dla użytkownika „root” @ „localhost” (przy użyciu hasła: NIE)

Ponownie instalowałem MySQL pięć razy, ale nadal prosi o hasło. Jak to naprawić?


W superużytkowniku jest prawie dokładne pytanie. Wykonaj następujące kroki: superuser.com/a/400345
Icarus

13
Po prostu biegnij mysql_secure_installationi odpowiedz na zadane pytania, proste
Abhinav Singh

8
Polecenie mysql_secure_installation monituje o hasło roota; jeśli go ustawiłeś i zapomniałeś, ta procedura nie pomoże.
JohnG

1
Jeśli brew zainstalował MySQL 5.7, wykonaj następujące kroki: stackoverflow.com/a/33924648/133106
mrucci

mysql -u rootPracowało tu FWIW ...
rogerdpack

Odpowiedzi:


116

Po prostu uruchom to polecenie (gdzie NEWPASSjest twoje hasło):

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

Miałem ten sam błąd i naprawiłem go w ten sposób.


16
Pracował dla mnie. Oczywiście (być może) znak dolara ($) musi być wprowadzony jako część polecenia (to nie jest tylko zachęta powłoki).
płyty grzewcze

3
Zalecałbym nie włączać NEWPASS do polecenia, aby uniknąć przechowywania w pliku historii powłoki. To polecenie automatycznie zapyta o dane wejściowe, jeśli uruchomisz je bez przejścia, więc nie ma powodu. :)
Levi Figueira

4
jeśli używasz mariadb:$(brew --prefix mariadb)/bin/mysqladmin -u root password NEWPASS
bryceadams

8
Nie działa dla mnie, z mariadb (nawet z notatką @bryceadams): / usr / local / opt / mariadb / bin / mysqladmin: połączenie z serwerem na 'localhost' nie powiodło się błąd: 'Odmowa dostępu dla użytkownika' root '@' localhost ' '
trainoasis

3
dla mariadb, jeśli uzyskasz odmowę dostępu dla użytkownika:sudo $(brew --prefix mariadb)/bin/mysqladmin -u root password NEWPASS
upful

110

Żaden z nich nie działał dla mnie. Myślę, że miałem już mysql gdzieś na moim komputerze, więc hasło zostało tam ustawione lub coś w tym stylu. Po spędzeniu wielu godzin na wypróbowywaniu każdego rozwiązania, oto co zadziałało:

$ 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

wszystkie zasługi dla @Ghrua


6
poprzednie posty nie działały dla mnie, ale ten, choć destrukcyjny, działał świetnie.
Clay

1
kiedy w końcu jesteś zalogowany do mysql, użyj, ALTER USER 'root'@'localhost' IDENTIFIED BY 'YOURNEWPASSWORD';aby ustawić nowe hasło roota.
Martin Braun

To zadziałało dla mnie bez usuwania mojej istniejącej bazy danych
Mwirabua Tim

Wreszcie właściwe rozwiązanie robocze. @ 2020 MacOs catalina.
Mindaugas Kurlys

To działało dla mnie, gdy poprzednie rozwiązanie nie działało. Dziękuję Ci!
Les Brown

65

W przypadku, gdy nieumyślnie ustawiłeś i zapomniałeś hasła roota, i nie chcesz wyczyścić wszystkich baz danych i zacząć od nowa, ponieważ jesteś leniwy i zapomniałeś mieć rozwiązanie do tworzenia kopii zapasowych na miejscu, a używasz dość niedawnej instalacji Homebrew (Zima 2013), oto kroki, aby zresetować hasło do MySQL.

Zatrzymaj aktualnie działającą instancję MySQL

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

Teraz uruchom mysql ręcznie, pomijając tabele grantów i sieci

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

Zauważ, że jeśli uruchomisz echo $ (brew --prefix mysql) i nie odpowiada ono jako „/ usr / local / opt / mysql” w bash, będziesz musiał odpowiednio dostosować ścieżkę.

Gdy to zrobisz, powinieneś mieć uruchomioną, niezabezpieczoną instancję MySQL.

Zaloguj się i ustaw hasło

mysql -u root

Po wyświetleniu monitu wprowadź następujące polecenie MySQL, aby ustawić nowe hasło dla użytkownika, którego dotyczy zmiana.

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

Gdyby wszystko poszło zgodnie z planem, powinno powiedzieć:

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

Wyjdź z zachęty MySQL.

mysql> exit
Bye

Zatrzymaj serwer:

mysqladmin -u root shutdown

Teraz odłóżmy demona uruchamiania, abyśmy mieli ponownie gotowy MySQL:

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

Gratulacje. Właśnie zresetowałeś swoje hasło root mysql. Nalej sobie kawę i przygotuj rozwiązanie zapasowe!


5
Aby zatrzymać niezabezpieczony serwer MySQL po zmianie hasła:mysqladmin -u root shutdown
Vebjorn Ljosa

9
Właśnie natknąłem się na ten problem i stwierdziłem, że ta odpowiedź jest najbliższa. Zauważyłem, że passwordnie była to prawidłowa kolumna w mysql 5.7.9. Zamiast tego musiałem użyć authentication_string. Reszta instrukcji działała idealnie. Dzięki!
M. Scott Ford

5
Jak powiedział M. Scott Ford, właściwe polecenie brzmi:update user set authentication_string=password('new_password_here') where user='root';
Panayotis

3
Musiałem biec update mysql.user set authentication_string=password('none') where user='root';, żeby to zadziałało. (Podobnie jak w komentarzu tuż nad mną, ale poprzedzić mysql.do user.)
Steve Meisner

2
funkcja hasła została usunięta od mysql 8.0.11. szczegóły więcej
chancyWu

62

Kilka dni temu miałem ten sam problem. Dzieje się tak, gdy instalujesz mysqlprzez homebrewi uruchamiasz skrypt inicjalizacyjny ( mysql_install_db) przed uruchomieniem mysqldemona.

Aby to naprawić, możesz usunąć mysqlpliki danych, zrestartować usługę, a następnie uruchomić skrypt inicjalizacyjny:

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

działało idealnie dla mnie. Właściwie nie chcę ustawiać hasła dla mojego komputera lokalnego, więc inne rozwiązania nie są tym, czego szukam
brad

3
mysql_install_db jest przestarzałe, rozważ użyciemysqld --initialize
Brian

1
Po prostu dostaję, No such file or directorykiedy uruchamiam to pierwsze polecenie.
Agent Zebra,

1
po uruchomieniu polecenia mysqld --initialize zauważysz w komunikacie logowania na konsoli, że ustawił tymczasowe hasło dla użytkownika root .. skopiuj to i użyj hasła przy następnym uruchomieniu polecenia "mysql -uroot -p" - To na pewno zadziała. . a następnie mysql poprosi Cię o zresetowanie hasła .. sprawdź to dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html
Vikrant Labde

@VikrantLabde "To na pewno zadziała" - bardzo ambitne stwierdzenie. Próbowałem tego, użyłem tymczasowego hasła, które mi dało, ale nadal nie zapewniało dostępu. Czy musiałeś uciec przed jakąkolwiek interpunkcją odwrotnym ukośnikiem?
Max Goodridge

47

Otrzymałem ten błąd po zainstalowaniu mysql przez home brew.

Więc najpierw usuń instalację. Następnie zainstaluj ponownie przez Homebrew

brew update
brew doctor
brew install mysql

Następnie zrestartuj usługę mysql

 mysql.server restart

Następnie uruchom to polecenie, aby ustawić nowe hasło roota.

 mysql_secure_installation

Na koniec poprosi o ponowne załadowanie uprawnień. Powiedz tak. Następnie zaloguj się ponownie do mysql. I użyj nowego hasła, które ustawiłeś.

mysql -u root -p

1
To idealne rozwiązanie. Próbowałem już biegać, mysql_secure_installationale kluczową częścią byłmysql.server restart
Johan,

mysql_secure_installation był kluczowym elementem
Nik

Aby uniknąć bólu głowy ... po prostu wpisz polecenie restartu, jak mówi nirojan, a następnie uruchom mysql_secure_installation
Dan Zuzevich

13

Jeśli uciekniesz

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

również logowanie z kontem root nie powiedzie się:

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

następnie użytkownik domyślny administrator jest tworzony samą nazwę jak twoi MacOS konto użytkownika , np johnsmit .

Aby zalogować się jako root, wyślij:

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

Nazwa konta MacOS zrobiła to za mnie.
Dan

czy mogę dodać hasło dla użytkownika nazwy konta macOS?
OrigamiEye


4

Właśnie zauważyłem coś wspólnego dla większości odpowiedzi tutaj i potwierdziłem to podczas mojej nowej instalacji. Jest to naprawdę oczywiste, jeśli spojrzysz na zalecenia, mysqladmin -u rootbez których należy działać -p.

Brak hasła.

Brew ustawia mysql tylko z użytkownikiem root i bez hasła. Wydaje mi się, że ma to sens, ale zastrzeżenia po instalacji w ogóle o tym nie wspominają.


2
Miałem problem z odmową dostępu przy założeniu braku hasła roota, więc nie sądzę, że problem jest oczywisty.
Jack Frost,

Nie twierdzę, że problem jest oczywisty; dla każdego, kto używał MySQL w normalnych okolicznościach, jest to całkowicie mylące. Ale patrząc na inne odpowiedzi, powód jest jasny.
Spyder

3

Spróbuj za pomocą, sudoaby uniknąć błędu „Odmowa dostępu”:

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


3

Ponieważ pytanie zostało zadane / odpowiedział dawno temu, te najlepsze odpowiedzi nie działają dla mnie. Oto moje rozwiązanie w 2020 roku.

Tło : Świeży mysql / mariadb zainstalowany przez homebrew.

Problem : Hasło roota nie jest puste i nieznane.

Poprawka :

  1. mysql -u NAZWA-UŻYTKOWNIKA-SYSTEMU -p
  2. Hasło jest puste (naciśnij enter)
  3. ALTER USER 'root' @ 'localhost' IDENTYFIKOWANE PRZEZ 'NEW-ROOT-PASSWORD';
  4. PRZYWILEJE PŁUKANIA;

Powód :

  1. Homebrew utworzy użytkownika z uprawnieniami roota nazwanymi według aktualnej nazwy użytkownika MacOS.
  2. nie ma hasła
  3. Ponieważ ma wszystkie uprawnienia, po prostu zresetuj hasło roota z tym użytkownikiem.
  4. Początkowe hasło roota zostało wygenerowane losowo.

Prawidłowa odpowiedź 2020. Nie mogę poprosić o hasło dla nazwy użytkownika MacOS
OrigamiEye

2
  1. przejdź do ikony Apple -> preferencje systemowe
  2. otwórz MySQL
  3. w instancjach zobaczysz „zainicjuj bazę danych”
  4. kliknij na to
  5. zostaniesz poproszony o ustawienie hasła dla roota -> ustaw tam silne hasło
  6. użyj tego hasła, aby zalogować się w mysql od następnego razu

Mam nadzieję że to pomoże.


Prosty i łatwy sposób. Dzięki.
Ezequiel França

1

Uruchomienie tych linii w terminalu załatwiło sprawę mnie i kilku innym, którzy mieli ten sam problem. Te instrukcje są wyświetlane w terminalu po pomyślnym zainstalowaniu mysql przez brew.

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'

gdzie YOURPASSWORDjest hasło do roota.


Po prostu dostaję, No such file or directorykiedy wykonuję te polecenia
Agent Zebra,

1

Sprawdź, czy nie masz pliku .my.cnf ukrytego w swoim katalogu domowym. To był mój problem.


1

To zadziałało dla mnie dla MAC https://flipdazed.github.io/blog/osx%20maintenance/set-up-mysql-osx

Uruchom mysql, uruchamiając

usługi parzenia start mysql

Uruchom skrypt instalacyjny

mysql_secure_installation

Zostaniesz poproszony o skonfigurowanie wtyczki WERYFIKUJ HASŁO. Wpisz y, aby to zrobić.

Wybierz wymaganą weryfikację hasła (nie ma znaczenia, czy tylko Ty korzystasz z bazy danych)

Teraz wybierz y dla wszystkich pozostałych opcji: Usuń anon. użytkownicy; nie zezwalaj na zdalne logowanie jako root; usuń testową bazę danych; przeładować tabele uprawnień. Teraz powinieneś otrzymać wiadomość o

All done!



1

To zadziałało dla mnie. Miejmy nadzieję, że to działa również dla Ciebie !!! Podążaj za nimi.

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
Musisz ostrzec, że uruchomienie rm -rf /usr/local/var/mysql/polecenia spowoduje usunięcie wszystkich baz danych i danych MySQL na Twoim komputerze!
Lashae

0

Domyślne hasło podczas instalacji mysql przez brew to root, spróbuj tego, zadziałało

mysql -uroot -proot


1
Od brew info mysql: Zainstalowaliśmy bazę danych MySQL bez hasła roota. Aby go zabezpieczyć, uruchom: mysql_secure_installation
ssc

@ssc Najlepszy sposób na ustawienie hasła w przypadku czystej instalacji.
alexventuraio,

0

Terminal 1:

$ mysql_safe

Terminal 2:

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

Mogło to zadziałać w momencie wysłania odpowiedzi, ale w międzyczasie się zepsuło; z (aktualną) wersją MySQL 5.7.21, nie powiedzie się z `` Nieznaną kolumną 'Hasło' na 'liście pól' '.
ssc

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

0

Używam Cataliny i używam tego mysql_secure_installationpolecenia, a teraz działa dla mnie:

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

wprowadzam rootjako aktualne hasło

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.

i zajmij się resztą


0

Więc na wypadek, gdyby ktoś miał taką samą sytuację i konfigurację jak ja i też zaraz oszaleje - to zadziałało mnie .

Po długiej historii miałem zainstalowaną MariaDB, która automatycznie uruchamiała się ponownie, gdy zabiłem jej proces (to było robione przez brew), która miała hasło roota, którego nie znałem.

$ brew services list

To pokazuje coś takiego:

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

Zatrzymaj serwer MySQL za pomocą:

$ brew services stop mariadb

Następnie uruchom go ponownie bez użytkownika root (i nie używając brew):

$ mariadbd --skip-grant-tables &

Tutaj mysql_secure_installationnie zadziałało u mnie z powodu --skip-grant-tables, a bez tego nie zadziałałoby, --skip-grant-tablesbo potrzebne było hasło (którego nie miałem).
Próba $(brew --prefix mysql)/bin/mysqladmin -u root password hunter2zwróciła tylko dziwne błędy i nic nie dała; $(brew --prefix mariadb)/bin/mysqladmin -u root password hunter2również nie działał, podawał różne błędy i sugestie, które nie działały dla mnie.

Ale może zalogować się do mysql teraz bez mandatów:$ mysql

W tym przypadku stara metoda aktualizowania tabeli użytkowników dla roota nie działa, ponieważ „Hasło kolumny” nie jest aktualizowalne ”.
Nowa metoda używa, alter userALE działa tylko wtedy, gdy to zrobisz flush privileges;, zrób to najpierw.
Następnie:
MariaDB [(none)]> alter user 'root'@'localhost' identified by 'hunter2';
( MariaDB [(none)]>jest MySQL szybka tutaj)
wtedy zrobićflush privileges; ponownie.
Zamknij klienta MySQL.

Jeśli chodzi o napar, MariaDB nadal nie działa, więc użyj go, $ ps aux | grep -i mariadbaby znaleźć pid i $ kill -9 <pid>to.
Następnie użyj, $ brew services start mariadbaby rozpocząć ponownie.


-1

Użyj pliku init, aby uruchomić mysql i zmienić hasło roota.

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

Twoje hasło roota zostało zmienione. Upewnij się, że serwer został poprawnie zamknięty, aby zapisać zmianę hasła. W nowym oknie terminala wykonaj

mysqladmin -u root -p shutdown

i wprowadź nową przepustkę.

Uruchom usługę i usuń plik init

brew services start mysql
rm /tmp/mysql-init

Testowane na mysql w wersji 8.0.19

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.