Zanim coś spieprzę, kiedy się zaloguję $ mysql -u root -p
i pokażę bazy danych:
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| game_data |
| test |
+--------------------+
Następnie próbowałem utworzyć nowego użytkownika i zauważyłem, że coś jest nie tak z PRIVILEGES.
Usunąłem więc nowych użytkowników i chyba przypadkowo usunąłem roota i administratora.
Następnie próbuję ponownie utworzyć „root”, ale dostaję błąd odmowy dostępu podczas wykonywania wszystkich uprawnień.
mysql> CREATE USER 'root'@'localhost' IDENTIFIED BY 'password';
mysql> grant all privileges on *.* to 'root'@'localhost' identified by 'password' with grant option;
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
Jeśli ponownie zaloguję się do MySQL $ mysql -u root -p
i pokażę bazy danych,
+--------------------+
| Database |
+--------------------+
| information_schema |
+--------------------+
Wszystkie pozostałe bazy danych zniknęły.
Jak teraz naprawić MySQL?
Nie mogę znaleźć bazy danych „mysql”, nie mogę utworzyć bazy danych, utworzyć użytkownika, wszystko, co próbuję zrobić, spowoduje błąd.
BŁĄD 1045 (28000): Odmowa dostępu dla użytkownika „root” @ „localhost” (przy użyciu hasła: TAK).
Czy powinienem ponownie zainstalować MySQL za pomocą MacPorts? W przypadku ponownej instalacji utracę bazę danych game_data
, prawda?
źródło
-p
i hasło. Wiem, że to głupie, ale może komuś pomóc.Odpowiedzi:
Wykonaj poniższe kroki.
Uruchom instancję lub demona serwera MySQL z
--skip-grant-tables
opcją (ustawienie zabezpieczeń).Wykonaj te instrukcje.
Jeśli napotkasz nieznane pole Błąd hasła powyżej użyj:
Na koniec zrestartuj instancję / demona bez
--skip-grant-tables
opcji.Powinieneś teraz móc połączyć się z nowym hasłem.
Wprowadź hasło:
my_password
Naprawiono błąd MySQL „Nie można zablokować ibdata1”
źródło
Żadne z powyższych nie było dla mnie pomocne. Odkryłem, że muszę wyczyścić metodę wtyczki. W 5.6 mogłem:
W 5.7 stwierdziłem, że muszę:
Według dokumentacji, z wtyczką ustawioną na pusty ciąg, powinna ona skutecznie domyślnie ustawić na mysql_native_password, ale może być mylona przez pusty skrót hasła. Aby uzyskać więcej niuansów, możesz przeczytać dokumentację tutaj: https://dev.mysql.com/doc/refman/5.7/en/native-authentication-plugin.html
źródło
set plugin='mysql_native_password'
zrobił to dla mnie, dzięki! Dla odniesienia: dev.mysql.com/doc/refman/5.7/en/…Upewnij się także, że potrzebny rekord w tabeli
user
ma pusteplugin
pole (może być na przykład"unix_socket"
).Od wersji 5.5.7 mysql obsługuje różne wtyczki uwierzytelniania https://dev.mysql.com/doc/refman/5.6/en/authentication-plugins.html
Więc jeśli masz niepuste
plugin
pole, hasło zostanie zignorowane, aw dzienniku błędów mysql pojawi się ostrzeżenie (dla mnie to/var/log/mysql/error.log
):[Warning] 'user' entry 'root@localhost' has both a password and an authentication plugin specified. The password will be ignored.
źródło
plugin
odmysql_native_password
.Możesz zobaczyć coś takiego;
Zabezpieczanie wdrożenia serwera MySQL.
Jeśli widzisz, mówi
Obejrzyj ostatnie 10 minut tego filmu , nauczy Cię, jak to zrobić.
źródło
Spróbuj:
źródło
--no-defaults --force
robią przełączniki? W przeciwnym razie jest to duplikat VLQ powyższej, zaakceptowanej odpowiedzi.ERROR 1054 (42S22): Unknown column 'Password' in 'field list'
W moim przypadku miałem uszkodzenie bazy danych, po zrestartowaniu mysql na Debianie login root'a był bez hasła. Rozwiązanie było następujące:
Niektóre inne odpowiedzi wspomniały również o wtyczce native_password, ale w ten sposób możesz to zrobić bez skomplikowanego manipulowania. Tak ma się to zmienić.
źródło