Właśnie wyczyściłem komputer Mac i wykonałem nową instalację El Capitan. Próbuję teraz połączyć się z MySQL. Po przejściu przez proces konfiguracji serwera WWW stworzyłem prosty plik testowy PHP:
<?php
$conn = new mysqli("127.0.0.1", "root", "xxxxxxxx");
if ($conn->connect_error) echo "Connection failed: " . $conn->connect_error;
else echo "Connected successfully";
phpinfo();
?>
Kiedy go uruchamiam, pojawia się ten błąd:
Warning: mysqli::mysqli(): (HY000/1862): Your password has expired. To log in you must change it using a client that supports expired passwords. in /Users/rich/Documents/DESIGN/test/index.php on line 3
Connection failed: Your password has expired. To log in you must change it using a client that supports expired passwords.
Nigdy wcześniej nie widziałem takiej odpowiedzi z połączenia. Jak to naprawić, jeśli nie mogę się połączyć?
EDYTOWAĆ
W terminalu wpisałem polecenie:
mysql -u root -p
To poprosiło mnie o moje hasło (aktualne), które wprowadziłem. Mam teraz dostęp do poleceń mysql, ale wszystko, czego próbuję, powoduje ten błąd:
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
Jak zresetować hasło za pomocą ALTER USER
?
php
mysql
macos
osx-elcapitan
CaribouCode
źródło
źródło
/usr/local/mysql/bin/mysqladmin -u root -p password
Odpowiedzi:
Więc w końcu sam znalazłem rozwiązanie.
Najpierw wszedłem do terminala i wpisałem:
mysql -u root -p
Poprosiłem o moje aktualne hasło, które wpisałem, i dało mi to dostęp do większej liczby poleceń mysql. Wszystko, co tutaj próbowałem, powodowało ten błąd:
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
Jest to mylące, ponieważ nie widziałem sposobu zresetowania hasła za pomocą
ALTER USER
instrukcji, ale znalazłem inne proste rozwiązanie:SET PASSWORD = PASSWORD('xxxxxxxx');
źródło
Najpierw używam:
Podaję moje aktualne hasło do „roota”. Kolejny:
mysql> ALTER USER `root`@`localhost` IDENTIFIED BY 'new_password', `root`@`localhost` PASSWORD EXPIRE NEVER;
Zmień
'new_password'
na nowe hasło dla użytkownika „root”.To rozwiązało mój problem.
źródło
ERROR 1805 (HY000): Column count of mysql.user is wrong. Expected 45, found 46. The table is probably corrupted
mysqladmin -u [username] -p password
pracował dla mnie na OS X El Capitan i MySQL 5.7.12 Community Server. Przykład:$ /usr/local/mysql/bin/mysqladmin -u root -p password Enter password: New password: Confirm new password: Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.
Jest to podobne do odpowiedzi pavan sachi, ale z pytaniami o hasło.
Mój błąd to „# 1862 - Twoje hasło wygasło. Aby się zalogować, musisz je zmienić za pomocą klienta obsługującego wygasłe hasła”. na ekranie logowania phpMyAdmin po raz pierwszy.
źródło
mysqladmin -u [username] -p password
Wygaśnięcie hasła MySQL
Zresetowanie hasła tylko tymczasowo rozwiąże problem. Od MySQL 5.7.4 do 5.7.10 (aby zwiększyć bezpieczeństwo - zobacz MySQL: Polityka wygaśnięcia hasła ) domyślna
default_password_lifetime
wartość zmiennej to 360 (1 rok). W przypadku tych wersji, jeśli nie wprowadzisz żadnych zmian w tej zmiennej (lub w poszczególnych kontach użytkowników), wszystkie hasła wygasają po 360 dniach.Tak więc ze skryptu możesz otrzymać komunikat: „Twoje hasło wygasło. Aby się zalogować, musisz je zmienić za pomocą klienta obsługującego wygasłe hasła”.
Aby zatrzymać automatyczne wygasanie hasła, zaloguj się jako root (
mysql -u root -p
), a następnie dla klientów, którzy automatycznie łączą się z serwerem (np. Skrypty), zmień ustawienia wygasania hasła:ALTER USER 'script'@'localhost' PASSWORD EXPIRE NEVER;
LUB możesz wyłączyć automatyczne wygasanie hasła dla wszystkich użytkowników :
SET GLOBAL default_password_lifetime = 0;
Jak zauważył Mertaydin w komentarzach, aby to było trwałe, dodaj następującą linię do
my.cnf
pliku odczytywanego przez MySQL podczas uruchamiania, w[mysqld]
grupie ustawień. Lokalizacjamy.cnf
zależy od twojej konfiguracji (np. Windows lub Homebrew na OS X lub instalatora) i czy chcesz to na użytkownika w systemie Unix czy globalnym:[mysqld]
default_password_lifetime = 0
(Mogą tu być też inne ustawienia ...)Zobacz dokumentację MySQL dotyczącą plików konfiguracyjnych .
źródło
Ostatnio przeszedłem przez ten sam problem podczas instalacji mysql na Mac OS X Capitan. Nie znalazłem tutaj poprawnej odpowiedzi, więc dodaj tę odpowiedź.
MySql w obecnych wersjach generuje tymczasowe hasło podczas instalacji mysql. Użyj tego hasła, aby ustawić nowe hasło za pomocą narzędzia mysqladmin, jak poniżej;
Mam nadzieję, że to pomoże tobie i innym.
źródło
Wystarczy pobrać Środowisko pracy MySQL, aby się zalogować. Zostanie wyświetlony monit o natychmiastową i automatyczną zmianę hasła.
źródło
uruchom MYSQL w trybie awaryjnym
mysqld_safe --skip-grant-tables &
Połącz się z serwerem MYSQL
uruchom polecenia SQL, aby zresetować hasło:
use mysql; SET GLOBAL default_password_lifetime = 0; SET PASSWORD = PASSWORD('new_password');
Ostatni krok, zrestartuj usługę mysql
źródło
miałem do czynienia z tym problemem kilka dni temu. Najlepsze rozwiązanie dla MySQL w wersji 5.7; zaloguj się do konsoli mysql i zmień hasło za pomocą następującego polecenia:
ALTER USER `root`@`localhost` IDENTIFIED BY 'new_password', `root`@`localhost` PASSWORD EXPIRE NEVER;
źródło
OSTRZEŻENIE: pozwoli to na zalogowanie się każdemu użytkownikowi
Musiałem spróbować czegoś innego. Ponieważ moje hasło roota wygasło, a zmiana nie była opcją, ponieważ
Column count of mysql.user is wrong. Expected 45, found 46. The table is probably corrupted
chwilowo dodając
skip-grant-tables
Under[mysqld]
wmy.cnf
i ponownym mysql wystarczyłyźródło
W systemie Windows w phpmyadmin spójrz na Variables: default_password_lifetime i przełącz go na 0 (zamiast 360), ciesz się.
Możliwe, że mySQL zajmie ponownie 360 dni, więc dodaj my.ini:
[mysqld] default_password_lifetime=0
I zrestartuj mysql.
źródło
To zadziałało dla mnie:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'yourpassword','root'@'localhost' PASSWORD EXPIRE NEVER;
źródło
zrestartuj serwer MySQL z opcją --skip-grant-table A następnie ustaw nowe hasło roota
$ mysql -u root mysql> USE mysql; mysql> UPDATE user SET password=PASSWORD("NEWPASSWORD") WHERE User='root'; mysql> FLUSH PRIVILEGES; mysql> quit
Teraz, jeśli potrzebujesz, możesz zaktualizować tabelę mysql.user (pole password_expired = 'N'), aby nie wygasać hasła.
źródło
mysql -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
mysql -u root -p
wtedy, gdy poprosiło mnie o hasło, które wprowadziłem. Twoje następne polecenie nie zadziałało, ponieważ było napisaneYou must reset your password using ALTER USER statement before executing this statement.
Wszystkie te odpowiedzi wykorzystują konsole Linux w celu uzyskania dostępu do MySQL.
Jeśli używasz systemu Windows i używasz WAMP, możesz zacząć od otwarcia konsoli MySQL (
click WAMP icon->MySQL->MySQL console
).Następnie poprosi Cię o podanie aktualnego hasła, wprowadź je.
A potem wpisz
SET PASSWORD = PASSWORD('some_pass');
źródło
najlepsze proste rozwiązanie:
[PATH MYSQL]/bin/mysql -u root [Enter password] SET GLOBAL default_password_lifetime = 0;
a potem działa dobrze.
źródło
Ta praca dla mnie:
Źródło: https://www.diariodeunprogramador.net/fallo-al-conectar-mysql-your-password-expired/
Zaloguj się jako root:
a następnie dezaktywujesz automatyczne wygasanie haseł wszystkich użytkowników:
SET GLOBAL default_password_lifetime = 0;
źródło
Wygaśnięcie hasła to nowa funkcja w MySQL 5.6 lub 5.7.
Odpowiedź jest jasna: użyj klienta, który jest w stanie zmienić wygasłe hasło (myślę, że Sequel Pro może to zrobić).
Biblioteka MySQLi oczywiście nie jest w stanie zmienić wygasłego hasła.
Jeśli masz ograniczony dostęp do localhost i masz tylko klienta konsoli, może to zrobić standardowy klient mysql.
źródło
Otwórz konsolę MySQL i wpisz SET PASSWORD = 'twoje hasło'; a następnie naciśnij klawisz ENTER, który ustawi zdefiniowane hasło dla użytkownika root.
Możesz tylko napisać SET PASSWORD = ''; co spowoduje ustawienie hasła użytkownika root jako pustego.
źródło
Zrobiłem coś takiego.
UPDATE mysql.user SET authentication_string = PASSWORD(''), password_expired = 'N' WHERE User = 'root' AND Host = 'localhost';
źródło
You must reset your password using ALTER USER statement before executing this statement.
Po prostu otwórz MySQL Workbench i wybierz [Instancja] Uruchamianie / Wyłączanie i kliknij start serwer. U mnie to zadziałało
źródło