Próbuję zmienić hasło roota MySql.
Poniżej przedstawiam to, co zrobiłem.
- Zainstaluj MySql-5.7.6 ~ .dmg (Community Server) i Środowisko pracy.
- Wyłącz serwer w preferencjach systemu OSX.
- Uzyskaj dostęp do MySql za pomocą konsoli. Rozkaz był
mysqld_safe --skip-grant
- Wykonaj
update user set password=password('1111') where user='root';
i otrzymałem komunikat o błędzie ->ERROR 1054 (42S22): Unknown column 'password' in 'field list'
.
FYI, tak use mysql;
. Więc wybrałem zapytanie w tabeli użytkowników i stwierdziłem, że kolumna hasła w rzeczywistości nie istnieje.
To bardzo dziwne. Czy to możliwe, że oryginalna tabela użytkownika nie ma kolumny hasła?
Jak mogę zmienić hasło, które nie istnieje?
Dzięki za odpowiedź: D
UPDATE mysql.user SET authentication_string= 'password' WHERE User = 'root';
Ponieważ pole „Hasło” zostało usunięte przez mysql i zastąpione ciągiem uwierzytelniania. Uwaga: funkcja mysql PASSWORD ('hasło') opiera się na algorytmie MD5, który został złamany dawno temu przy użyciu ataku na dzień urodzenia. Dlatego używanie go daje fałszywe poczucie bezpieczeństwa, ponieważ osoba atakująca może po prostu wkleić utworzone przez siebie skróty w publicznej witrynie internetowej, takiej jak hashkiller.co.uk/md5-decrypter.aspx, i odzyskać hasło w postaci zwykłego tekstu.Odpowiedzi:
W MySQL 5.7 pole hasła w tabeli mysql.user zostało usunięte, teraz nazwa pola to „authentication_string”.
Najpierw wybierz bazę danych:
A następnie pokaż tabele:
Znajdziesz tabelę użytkowników, teraz zobaczmy jej pola:
Niespodzianka! Nie ma pola o nazwie „hasło”, pole z hasłem ma nazwę „ciąg_autoryzacji”. Więc po prostu zrób to:
Teraz wszystko będzie dobrze.
W porównaniu z MySQL 5.6 zmiany są dość obszerne: Co nowego w MySQL 5.7
źródło
use mysql;
update user set authentication_string=PASSWORD("") where User='root';
update user set plugin="mysql_native_password" where User='root'; # THIS LINE
flush privileges;
quit;
Ten błąd występuje, jeśli nie ustawiłeś hasła podczas instalacji, w tym przypadku mysql za pomocą wtyczki unix-socket .
Ale jeśli usuniesz link do wtyczki z ustawień (tabela mysql.user) będzie inny problem. Nie rozwiązuje to problemu i stwarza kolejny problem. Aby naprawić usunięty link i ustawić hasło („PWD”), wykonaj:
1) Uruchom
--skip-grant-tables
zgodnie z powyższym.Jeśli nie robi prace następnie dodać ciąg
skip-grant-tables
w części[mysqld]
z/etc/mysql/mysql.conf.d/mysqld.cnf
. Więc zróbsudo service mysql restart
.2) Uruchom
mysql -u root -p
, a następnie (zmień „PWD”):wtedy
sudo service mysql restart
. Sprawdźmysql -u root -p
.Przed
restart
usunięciem tego ciągu z pliku mysqld.cnf, jeśli go tam ustawisz.źródło
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '("MYNEWPASSWORD"), plugin="mysql_native_password"
Jedną z pułapek, w które wpadłem, jest to, że nie ma teraz pola hasła , zostało ono zmienione, więc:
update user set password=PASSWORD("YOURPASSWORDHERE") where user='root';
Teraz powinno być:
update user set authentication_string=password('YOURPASSWORDHERE') where user='root';
źródło
Użyj
ALTER USER
polecenia, zamiast próbować aktualizowaćUSER
wiersz. Pamiętaj, że może istnieć więcej niż jeden użytkownik „root”, ponieważ jednostki użytkowników są kwalifikowane również przez komputer, z którego się łącząhttps://dev.mysql.com/doc/refman/5.7/en/alter-user.html
Na przykład.
źródło
U mnie działało tylko wtedy, gdy „zaczerwieniłem się” po poleceniach wymienionych tutaj. Oto pełna lista poleceń, których użyłem:
Poprzednie odpowiedzi mogą nie działać w późniejszych wersjach mysql. Spróbuj wykonać poniższe czynności, jeśli poprzednie odpowiedzi nie pomogły:
1- Kliknij ikonę wampa> mysql> konsola mysql
2- napisz następujące polecenia, jeden po drugim
źródło
Dziękuję za pomoc. Na wszelki wypadek, jeśli ludzie nadal mają problemy, spróbuj tego.
Dla MySQL w wersji 5.6 i starszych
Czy zapomniałeś hasła „ROOT” w systemie Mac OS X i musisz je zresetować? Wykonaj te 4 proste kroki:
sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables
sudo /usr/local/mysql/bin/mysql -u root UPDATE mysql.user SET Password=PASSWORD('NewPassword') WHERE User='root'; FLUSH PRIVILEGES; \q
Dla MySQL w wersji 5.7 i nowszych
'System Prefrences' > MySQL > 'Stop MySQL Server'
sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables
sudo /usr/local/mysql/bin/mysql -u root UPDATE mysql.user SET authentication_string=PASSWORD('NewPassword') WHERE User='root'; FLUSH PRIVILEGES; \q
źródło
W przypadku tego problemu użyłem prostej i niegrzecznej metody, zmień nazwę pola na hasło, powodem tego jest to, że używam oprogramowania premium mac navicat w wizualnym błędzie operacji: Nieznana kolumna 'hasło' w 'liście pól', samo oprogramowanie używa hasła, więc nie mogę łatwo obsługiwać. Dlatego rootuję w wierszu poleceń bazy danych, uruchamiam
A następnie zmodyfikuj nazwę pola:
W końcu normalne.
źródło
Root Cause: root nie ma hasła, a instrukcja connect w Pythonie powinna to odzwierciedlać.
Aby rozwiązać błąd 1698, zmień hasło połączenia Python na „”.
uwaga: ręczna aktualizacja hasła użytkownika nie rozwiąże problemu, nadal będzie wyświetlany błąd 1698
źródło
pamiętaj, że hasło musi być ustawione dalej, nawet po ponownym uruchomieniu mysql, jak poniżej
źródło