Obecne środowisko:
mysql> show variables like "%version%";
+-------------------------+------------------------------+
| Variable_name | Value |
+-------------------------+------------------------------+
| innodb_version | 5.7.13 |
| protocol_version | 10 |
| slave_type_conversions | |
| tls_version | TLSv1,TLSv1.1 |
| version | 5.7.13 |
| version_comment | MySQL Community Server (GPL) |
| version_compile_machine | x86_64 |
| version_compile_os | Linux |
+-------------------------+------------------------------+
8 rows in set (0.01 sec)
Użytkownik polecenia zmiany hasła:
mysql> update user set password=PASSWORD("XXXX") where user="root";
ERROR 1054 (42S22): Unknown column 'password' in 'field list'
Czy coś brakuje?
mysql
w trybie awaryjnym. następnie możesz zmienić hasło rootaOdpowiedzi:
W MySQL 5.7
password
pole w polumysql.user
tabeli zostało usunięte, teraz nazwa pola toauthentication_string
.Najpierw wybierz bazę danych:
A następnie pokaż tabele:
Znajdziesz
user
tabelę i zobaczysz jej pola:Uświadomisz sobie, że nie ma nazwanego pola
password
, pole hasła jest nazwaneauthentication_string
. Więc po prostu zrób to:Zgodnie z sugestią @Rui F Ribeiro, alternatywnie możesz uruchomić:
źródło
SET PASSWORD FOR 'root' = PASSWORD('new_password');
Sposób zmiany hasła w MySQL to
SET PASSWORD
patrz MySQL 5.7 Instrukcja obsługi / ... / SET PASSWORD Składnia
Zaakceptowana odpowiedź od Rahula pokazuje, jak zaktualizować hasło za pomocą
DML
instrukcji.Ostrzeżenie: to nie jest oficjalny i obsługiwany sposób. Może powodować problemy, jeśli nie wiesz, co robisz. Nie zapomnij
FLUSH PRIVILEGES
.Przestań używać FLUSH PRIVILEGES
Proszę używać
GRANT
,REVOKE
,SET PASSWORD
, lubRENAME USER
, a nie bezpośrednie oświadczenia DML.Aktualizacja: SET PASSWORD ... = Składnia PASSWORD ('auth_string') jest przestarzała od MySQL 5.7.6 i zostanie usunięta w przyszłej wersji MySQL.
źródło
mysqladmin -u user-name password -p "oldpassword" "newpass"
jeśli możesz się zalogować, spróbuj tego
""
nie zadziała spróbuj''
pojedynczego cytatuupdate user set password=PASSWORD("newpass") where User='ENTER-USER-NAME-HERE';
źródło
authentication_string
W moim przypadku
Więc myślę, że twoje polecenie aktualizacji jest prawidłowe, ale musisz zrestartować serwer mysql.
źródło
W przypadku tego problemu zastosowałem prostą i niegrzeczną metodę, zmień nazwę pola na hasło, ponieważ używam oprogramowania mac navicat premium 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 linii poleceń bazy danych, uruchamiam
A następnie zmodyfikuj nazwę pola:
W końcu normalne.
źródło