Jak działa haszowanie haseł w MySQL?

MySQL używa kryptograficznego haszowania, aby bezpiecznie przechowywać hasła użytkowników. Zamiast zapisywać hasła w postaci czystego tekstu, MySQL przekształca je w stałej długości ciągi hashy przy użyciu jednoczynnikowych funkcji matematycznych. Gdy użytkownik próbuje się zalogować, MySQL hashuje podane hasło i porównuje je z zapisanym hashem. Jeśli się zgadzają, uwierzytelnienie kończy się powodzeniem. Takie podejście zapewnia, że nawet w przypadku uzyskania dostępu do bazy danych, nie można bezpośrednio odczytać haseł użytkowników.

Nowoczesny algorytm MySQL Native Password stosuje podwójne haszowanie SHA‑1: SHA1(SHA1(password)). Podwójne haszowanie dodaje dodatkową warstwę bezpieczeństwa. Otrzymany 40‑znakowy ciąg szesnastkowy jest poprzedzony gwiazdką (*) w celu oznaczenia, że jest to haszowane hasło, co daje wartości takie jak *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19.

Opis narzędzia

MySQL Password Hash Generator tworzy hashe uwierzytelniające zgodne z bazami danych MySQL i MariaDB. Wpisz dowolne hasło, a narzędzie natychmiast wygeneruje odpowiadający mu hash, który można użyć bezpośrednio w instrukcjach SQL, takich jak CREATE USER lub ALTER USER. Narzędzie obsługuje zarówno nowoczesny format MySQL Native Password (MySQL 4.1 i nowsze), jak i starszy format Old Password przeznaczony dla starszych systemów.

Przykłady

MySQL Native Password (4.1+):

  • Wejście: mypassword
  • Wyjście: *FABE5482D5AADF36D028AC443D117BE1180B9725

Old Password (Pre‑4.1):

  • Wejście: mypassword
  • Wyjście: 162eebfb6477e5d3

Użycie w SQL:

-- Tworzenie użytkownika z zahashowanym hasłem
CREATE USER 'username'@'localhost' IDENTIFIED BY PASSWORD '*FABE5482D5AADF36D028AC443D117BE1180B9725';

-- Aktualizacja istniejącego hasła użytkownika
ALTER USER 'username'@'localhost' IDENTIFIED BY PASSWORD '*FABE5482D5AADF36D028AC443D117BE1180B9725';

Funkcje

  • MySQL Native Password – generuje hashe SHA1(SHA1(password)) dla MySQL 4.1+ i MariaDB
  • Legacy Old Password – obsługuje format hashy sprzed MySQL 4.1 w celu zachowania kompatybilności wstecznej
  • Haszowanie w czasie rzeczywistym – hash aktualizuje się natychmiast podczas wpisywania
  • Przełącznik widoczności hasła – umożliwia pokazanie lub ukrycie wpisywanego hasła dla wygodniejszego wprowadzania
  • Kopiowanie jednym kliknięciem – szybkie skopiowanie wygenerowanego hashy do schowka

Przypadki użycia

  • Tworzenie kont użytkowników MySQL z wstępnie zahashowanymi hasłami w skryptach wdrożeniowych
  • Migracja użytkowników między bazami MySQL przy zachowaniu istniejących hashy haseł
  • Testowanie i weryfikacja konfiguracji uwierzytelniania MySQL
  • Generowanie hashy haseł dla aplikacji kompatybilnych z MySQL
  • Rozwiązywanie problemów z uwierzytelnianiem poprzez porównywanie oczekiwanych i rzeczywistych hashy

Obsługiwane formaty hashy

Format Algorytm Wersja MySQL Przykład wyjścia
MySQL Native Password SHA1(SHA1(password)) 4.1+ *2470C0C06DEE42FD...
Old Password Niestandardowy hash Pre‑4.1 6f8c114b58f2ce9e

Aspekty bezpieczeństwa

Hash MySQL Native Password jest zalecanym formatem dla wszystkich nowoczesnych instalacji MySQL i MariaDB. Format Old Password jest uznawany za niebezpieczny i powinien być używany wyłącznie w celu kompatybilności ze starszymi systemami, które nie mogą zostać zaktualizowane. MySQL 8.0 wprowadził caching_sha2_password jako nowy domyślny mechanizm, jednak mysql_native_password pozostaje szeroko wspierany i powszechnie używany.