Ustawienie hasła użytkownika root MySQL w OS X


235

Właśnie zainstalowałem MySQL na Mac OS X. Kolejnym krokiem było ustawienie hasła użytkownika root, więc zrobiłem to w następnej kolejności:

  1. Uruchom aplikację terminalową, aby uzyskać dostęp do wiersza poleceń systemu Unix.
  2. Pod poleceniem Unixa wykonałem następujące polecenia:

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

Ale kiedy wykonuję polecenie

$ ./mysql -u root, to jest odpowiedź:

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>

Mogę dostać się do mysqlwiersza poleceń bez żadnego hasła!

Dlaczego to?

Odpowiedzi:


320

Spróbuj wykonać polecenie FLUSH PRIVILEGESpo zalogowaniu się do terminala MySQL. Jeśli to nie zadziała, wypróbuj następujący zestaw poleceń w terminalu MySQL

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

Zmień NEWPASSWORD na dowolne hasło. Powinny być gotowe!

Aktualizacja : Od MySQL 5.7 passwordzmieniono nazwę pola authentication_string. Podczas zmiany hasła użyj następującego zapytania, aby zmienić hasło. Wszystkie pozostałe polecenia pozostają takie same:

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

Aktualizacja : W wersji 8.0.15 (być może już przed tą wersją) funkcja PASSWORD () nie działa, jak wspomniano w komentarzach poniżej. Musisz użyć:

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


24
W MySQL 5.7 i później nazwa kolumny uległa zmianie. Musisz użyć UPDATE mysql.user SET authentication_string=PASSWORD('password') WHERE User='root';zamiast tego.
Carlos P

Dzięki za heads-upy. Zmienię swoją odpowiedź, aby odpowiednio ją odzwierciedlić.
Scott

8
Wygląda również na to, że funkcja PASSWORD () jest przestarzała i powinieneś po prostu umieścić ją 'password'po prawej stronie równości
kvn

6
Jeśli nie możesz się zalogować, jak to pomaga?
Jake N

11
po wykonaniu tych kroków. Gdy próbuję zalogować się ponownie przy użyciu nowego hasła, otrzymujęERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
Maraw

197

Jeśli nie pamiętasz hasła ustawionego dla użytkownika root i musisz je zresetować, wykonaj następujące kroki:

  1. Zatrzymaj serwer mysqld, to zależy od instalacji
  2. Uruchom serwer w trybie awaryjnym z obejściem uprawnień

sudo mysqld_safe --skip-grant-tables;

  1. W nowym oknie połącz się z bazą danych, ustaw nowe hasło i opróżnij uprawnienia i zakończ:

mysql -u root

W przypadku MySQL starszego niż MySQL 5.7 użyj:

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

W przypadku MySQL 5.7+:

USE mysql;

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

Odśwież i zamknij:

FLUSH PRIVILEGES;

\q

  1. Zatrzymaj serwer w trybie awaryjnym i uruchom ponownie zwykły serwer. Nowe hasło powinno już działać. Dla mnie zadziałało :)

4
To było idealne, dziękuję! W systemie Mac OSx Mavericks (2014) użyj sudo / Library / StartupItems / MySQLCOM / MySQLCOM stop | start | restart
Chris Adams

2
passwordmusi być authentication_stringteraz.
zx1986,

Po MySQL 5.7 tak powinno być UPDATE user SET authentication_string=PASSWORD("NEWPASSWORD") WHERE User='root';, tak jak powiedział @Scott.
zx1986,

Dzięki doda, że
radtek

1
Na MacOSX gdy MySQL jest instalowany z „Preferencje«Pane»opcji (Apple Menu -> Preferencje systemowe ...), i okazało się, że po raz pierwszy musiał zatrzymać MySQL za pomocą panelu preferencji do pełnego etapu 1 powyższego używa. sudo killNie działam, ponieważ Mac OSx automatycznie ponownie uruchamia nowy msql. Gdy zatrzymałem mysql za pomocą panelu preferencji, mogłem ręcznie uruchomićmysqld_safe --skip-grant-tables
toddcscar

85

Po zainstalowaniu MySQL musisz ustalić hasło „root”. Jeśli nie ustanawiasz hasła roota, to nie ma hasła roota i nie potrzebujesz hasła do logowania.

To powiedziawszy, musisz ustalić hasło roota.

Za pomocą terminala wprowadź następujące dane:

Instalacja: Ustaw hasło użytkownika root:

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

Jeśli popełniłeś błąd lub musisz zmienić hasło roota, użyj następujących poleceń:

Zmień hasło roota:

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
Dla tych, którzy mają MySQL 5.7, powinieneś użyć update user set authentication_string=PASSWORD("NEW_PASSWORD_HERE") where User='root';zamiastset password=...
pdm

66

Instrukcje podane na stronie mysql są tak jasne, jak wyżej wspomniane

  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> PRZYWILEJE PŁUKANE;
  5. mysql> ALTER USER 'root' @ 'localhost' IDENTIFIED BY 'MyNewPass';
  6. mysql> exitlub 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. Wprowadź nowe hasło, tj. MyNewPass

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


2
w systemie Mac OS 10.12.6 wyświetla błąd po drugim poleceniu ERROR! Serwer zakończył pracę bez aktualizacji pliku PID (/usr/local/mysql/data/myhostname.pid).
diEcho,

Dziękujemy za wskazanie, gdzie znaleźć dokumentację. Jest trochę mylące na Macu, gdy można również użyć sudo launchctl unload -F /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist i sudo launchctl unload -F /Library/LaunchDaemons/com.oracle.oss .mysql.mysqld.plist, aby zatrzymać i uruchomić mysql. Użycie sudo /usr/local/mysql/support-files/mysql.server stop wydaje się lepszym podejściem.
Daniel

59
  1. Zatrzymaj serwer mysqld.

    • Mac OS X: System Preferences > MySQL>Stop MySQL Server
    • Linux (z terminala): sudo systemctl stop mysqld.service
  2. Uruchom serwer w trybie awaryjnym z obejściem uprawnień

    • Z terminala: sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables
  3. W nowym oknie terminala:

    • sudo /usr/local/mysql/bin/mysql -u root
  4. Spowoduje to otwarcie wiersza polecenia mysql. Stąd wprowadź:

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

    • FLUSH PRIVILEGES;

    • quit

  5. Zatrzymaj serwer mysqld ponownie i uruchom go ponownie w trybie normalnym.

    • Mac OSX (z terminala): sudo /usr/local/mysql/support-files/mysql.server restart
    • Terminal Linux: sudo systemctl restart mysqld

1
Działa to doskonale w przypadku uruchamiania wersji 5.7.23 na High Sierra. Dzięki.
Daniel

W MySQL 8.0.11 funkcja set w 4. kroku została usunięta. Sprawdź tutaj, ten działa. stackoverflow.com/a/52579886/621951
Günay Gültekin

22

Dla nowego MySQL 5.7 z jakiegoś powodu polecenia bin MySQL nie są dołączone do powłoki:

  1. Uruchom ponownie komputer Mac po instalacji.

  2. Uruchom MySQL:

    Preferencje systemowe> MySQL> przycisk Start

  3. Przejdź do folderu instalacyjnego MySQL w terminalu:

    $ cd /usr/local/mysql/bin/

  4. Dostęp do MySQL:

    $ ./mysql -u root -p

i wprowadź początkowe hasło podane dla instalacji.

  1. W terminalu MySQL zmień hasło:

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


16

W terminalu napisz mysql -u root -pi naciśnij Return. Wprowadź bieżące hasło mysql, które musisz zanotować. I ustaw hasło SET PASSWORD = PASSWORD('new_password');

Więcej informacji można znaleźć w tej dokumentacji tutaj .


10

Jeśli zapomniałeś hasła root MySQL, nie pamiętasz lub nie chcesz się włamać… .. możesz zresetować hasło bazy danych mysql z wiersza poleceń w systemie Linux lub OS X, o ile znasz hasło root użytkownika jesteś na:

(1) Zatrzymaj MySQL

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

(2) Uruchom go w trybie awaryjnym:

sudo mysqld_safe --skip-grant-tables

(3) Będzie to ciągłe polecenie do zakończenia procesu, więc otwórz kolejne okno powłoki / terminala , zaloguj się bez hasła:

mysql -u root

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

W powyższym poleceniu UPDATE po prostu zastąp „hasło” własnym nowym hasłem, pamiętaj o zachowaniu cudzysłowów

(4) Oszczędzaj i całkiem

FLUSH PRIVILEGES;

\q

(5) Uruchom MySQL

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

5

Kiedy zainstalowałem OS X Yosemite, mam problem z Mysql. Próbowałem wielu metod, ale żadna nie działała. Znalazłem dość łatwy sposób. Wypróbuj to.

  1. Najpierw zaloguj się do terminalu z uprawnień su.

sudo su

  1. zatrzymać mysql

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

  1. uruchom w trybie awaryjnym:

sudo mysqld_safe --skip-grant-tables

  1. otwórz inny terminal, zaloguj się jako uprawnienia su, zaloguj się mysql bez hasła

mysql -u root

  1. Zmień hasło

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

  1. uprawnienia do spłukiwania

FLUSH PRIVILEGES;

  1. Już skończyłeś

Dziękuję bardzo. Trochę z tym walczyłem. Czy to nowa rzecz w najnowszych wersjach mysql?
jpbourbon


3

Jeśli nie pamiętasz hasła, odpowiedź @ radtek zadziałała dla mnie, z wyjątkiem mojego przypadku, w którym skonfigurowałem MySQL przy użyciu brew, co oznaczało, że kroki 1 i 2 jego odpowiedzi musiały zostać zmienione na:

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

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

Uwaga: brak sudo.


3

Myślę, że to powinno działać:

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

(Pamiętaj, że prawdopodobnie powinieneś zastąpić root swoją nazwą użytkownika, jeśli nie jest to root)


2

Zatrzymywanie serwera MySQL

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

Uruchamianie MySQL w trybie awaryjnym

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

Zmiana hasła roota

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

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

Testowanie

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

Teraz wprowadź nowe hasło, aby rozpocząć korzystanie z MySQL.


2

Oto, co dokładnie dla mnie zadziałało:

  1. Upewnij się, że żaden inny proces MySQL nie jest uruchomiony. Aby to sprawdzić, wykonaj następujące czynności:

     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. Uruchom MySQL za pomocą polecenia:

    sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables
  3. Hasło dla każdego użytkownika jest przechowywane w tabeli mysql.user odpowiednio w kolumnach Użytkownik i ciąg_ uwierzytelnienia. Możemy zaktualizować tabelę jako:

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

2

macOS 10.14+ z 5.7.26 zainstalowanym z instalatora Mac OSX DMG.

Podczas próby użycia polecenia UPDATE wysłanego przez innych użytkowników występuje następujący błąd:

BŁĄD 1820 (HY000): Przed wykonaniem tej instrukcji musisz zresetować hasło za pomocą instrukcji ALTER USER.

Skopiuj hasło, które zostało przedstawione przez otwarty terminal instalatora i wykonaj następujące czynności:

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


2

Aby odwołać się do MySQL 8.0.15 +, funkcja hasła () jest niedostępna. Użyj polecenia poniżej.

Uprzejmie używać

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

1

Jeśli zapomniałeś hasła lub chcesz je zmienić na mysql:

  1. uruchom terminal i wprowadź:
sudo su
  1. Wprowadź hasło dla swojego systemu
  2. Zatrzymaj mysql:
sudo /usr/local/mysql/support-files/mysql.server stop
  1. Pozostaw to okno OTWARTE, uruchom drugie okno terminala i wpisz tutaj:
mysql -u root
  1. I zmień hasło do mysql:
UPDATE mysql.user SET authentication_string=PASSWORD('new_password') WHERE User='root';

gdzie „nowe_hasło” - twoje nowe hasło. Nie potrzebujesz starej przepustki na mysql.

  1. Spłucz, wyjdź i sprawdź swoją nową przepustkę:
FLUSH PRIVILEGES;
  1. Zamknij wszystkie okna i sprawdź swoją nową przepustkę pod kątem mysql. Powodzenia.

1

Wiele się zmieniło w MySQL 8. Znalazłem następującą modyfikację dokumentacji MySQL 8.0 „Jak zresetować hasło root” w systemie Mac OS X.

Utwórz plik tymczasowy $HOME/mysql.root.txtza pomocą SQL, aby zaktualizować hasło roota:

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

Pozwala mysql_native_passwordto uniknąć błędu ładowania wtyczki Uwierzytelnianie „caching_sha2_password” , którą otrzymuję, jeśli pominę tę opcję.

Zatrzymaj serwer, zacznij od --init-fileopcji ustawienia hasła roota, a następnie uruchom ponownie serwer:

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


1

Dodajmy to obejście, które działa na moim laptopie!

Mac z Osx Mojave 10.14.5

MySQL 8.0.17 został zainstalowany z Homebrew

  • Uruchomię następujące polecenie, aby zlokalizować ścieżkę mysql

    brew info mysql

  • Po poznaniu ścieżki uruchamiam to:

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

  • W innym terminalu uruchamiam:

    mysql -u root

  • W tym terminalu zmieniłem hasło roota, używając:

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

  • i na koniec biegnę:

    FLUSH PRIVILEGES;

I voila hasło zostało zresetowane.

Bibliografia :


1

Możesz ręcznie wyłączyć mysql na Macu, klikając  menu Apple i otwierając Preferencje systemowe. Wybierz panel preferencji „MySQL”, a następnie kliknij przycisk „Zatrzymaj serwer MySQL”, aby zatrzymać serwer MySQL na komputerze Mac.

Po zatrzymaniu mysql musisz wykonać następujące kroki.

  • Musisz uruchomić mysql w trybie pomijania tabel

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

  • W samym terminalu wprowadź to polecenie, aby SPŁUŻYĆ istniejące UPRAWNIENIA

/ usr / local / mysql / bin / mysql mysql> PRZYWILEJE FLUSH;

  • Teraz musisz zmienić hasło użytkownika

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

mysql> exit

Następnie możesz przejść do  menu Apple i otworzyć Preferencje systemowe. Wybierz panel preferencji „MySQL”, a następnie kliknij przycisk „Zatrzymaj serwer MySQL”, aby zatrzymać serwer MySQL na komputerze Mac.

Wreszcie możesz ponownie przejść do  menu Apple i otworzyć Preferencje systemowe. Wybierz panel preferencji „MySQL”, a następnie kliknij przycisk „Uruchom serwer MySQL”, aby uruchomić serwer MySQL na komputerze Mac.

Mam nadzieję, że to pomaga


1

Żaden z poprzednich komentarzy nie rozwiązał problemu na moim komputerze Mac. Użyłem poniższych poleceń i 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 -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';

Jakoś muszę to robić za każdym razem, gdy mój Macbook uruchamia się ponownie. Opublikowanie tego w celach osobistych, mam nadzieję, że pomoże to również komuś innemu.

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.