Те, кто обновил MySQL до версии 5.7 должен был столкнуть с этой проблемой. Что это и как ее решить читаем дальше.
В версии MySQL 5.7 для паролей теперь задается время жизни. Хотя поговаривают, что эта фича была и в 5.6 но я копать не стал, а стал искать решение. Смысл в том, что по истечению некоторого времени в phpMyAdmin мы увидим такое:
#1862 Невозможно подключиться к серверу MySQL
А наш сайт при подключении к базе выдаст следующее сообщение:
Warning: mysqli_connect(): (HY000/1862): Your password has expired.
Для начала надо запустить консоль MySQL. Для этого идем в папку с установленной СУБД и запускаем файл mysq.exe (примерно это здесь: C:\WebServer\usr\local\mysql\bin\mysql.exe).
Если у вас, как и у меня, консоль открылась и сразу закрылась, то делаем следующее: открываем консоль виндовса (нажмите сочетание клавиш Win+R и в открывшемся окошке введите cmd) и пропишите адрес до самого файла mysql.exe. Вот как у меня.
Если и здесь нас настигла ошибка (ERROR 1045 (280000): Access danied for user…) — прописываем ту же команду но дополняем ее параметрами -u root -p и нажимайте enter и еще раз enter. После этого вы должны увидеть следующее:
На следующем этапе надо будет ввести такую команду:
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
Теперь нам надо перезапустить MySQL. Для этого откройте новое окно консоли и пропишите такую команду net stop mysql. Тут нас могут поругать, что нет достаточных прав, как на скрине
Чтобы этого избежать, нам надо запустить консоль с правами администратора. Для этого делаем следующее: в поиске виндовса наберите слово cmd. Теперь в списке вы видите пункт Командная строка (она же консоль). Нажмите правой кнопкой мыши на ней и выберите из выпадающего меню пункт «Запустить от имени администратора»
Теперь запустится консоль с правами администратора. Визуально это также заметно, стоит только обратить внимание на титул окна
Теперь вводим команду net stop mysql и жмем Enter. Таким образом мы остановили нашу службу, а командой net start mysql мы ее снова запускаем. То есть мы просто перегрузили наш MySQL чтобы изменения вступили в силу.
Вот и все.