Пароль Mysql истек. Не удается подключиться

Я просто вытер свой Mac и сделал новую установку El Capitan. Я изо всех сил пытаюсь подключиться к Mysql сейчас. Пройдя через процесс установки веб-сервера, я создал простой тестовый файл 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();
?>

когда я запускаю его, я получаю эту ошибку:

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.

Я никогда не видел такого ответа от соединения раньше. Как это исправить, если я не могу подключиться?

редактировать

в терминале я вошел в команда:

mysql -u root -p

Это спросило меня о моем пароле (текущем), который я ввел. Теперь у меня есть доступ к командам mysql, но все, что я пытаюсь, приводит к этой ошибке:

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

как сбросить пароль с помощью ALTER USER?

16 ответов


Итак, я, наконец, нашел решение сам.

сначала я вошел в терминал и набрал:

mysql -u root -p

это попросило мой текущий пароль, который я ввел, и он дал мне доступ, чтобы предоставить больше команд mysql. Все, что я пробовал отсюда, дало эту ошибку:

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

Это сбивает с толку, потому что я не мог видеть способ сброса пароля с помощью ALTER USER заявление, но я нашел другой простой решение:

SET PASSWORD = PASSWORD('xxxxxxxx');


во-первых, я использую:

 mysql -u root -p

предоставление моего текущего пароля для "root". Далее:

mysql> ALTER USER `root`@`localhost` IDENTIFIED BY 'new_password',
       `root`@`localhost` PASSWORD EXPIRE NEVER;

изменить 'new_password' новый пароль для пользователя root''.
Это решило мою проблему.


mysqladmin -u [username] -p password работал для меня на OS X El Capitan и MySQL 5.7.12 Community Server. Пример:

$ /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.

это похоже на ответ Павана Сачи, но с подсказками пароля.

моя ошибка была " #1862-ваш пароль истек. Для входа в систему необходимо изменить его с помощью клиента, поддерживающего просроченные пароли."на экране входа phpMyAdmin в первый раз.


истечение срока действия пароля MySQL

сброс пароля решит проблему только временно. От MySQL 5.7.4 до 5.7.10 (для поощрения лучшей безопасности-см. MySQL: Политика Истечения Срока Действия Пароля) по умолчанию default_password_lifetime переменное значение 360 (1 год-иш). Для этих версий, если вы не вносите изменений в эту переменную (или в отдельные учетные записи пользователей) все срок действия пароля истекает через 360 дней.

таким образом, из сценария вы можете получить сообщение: - Ваш пароль истек. Для входа в систему необходимо изменить его с помощью клиента, поддерживающего просроченные пароли."

чтобы остановить автоматическое истечение пароля, войдите в систему как root (mysql -u root -p), то для клиенты, которые автоматически подключаются к серверу (например, скрипты.) изменить параметры истечения срока действия пароля:

ALTER USER 'script'@'localhost' PASSWORD EXPIRE NEVER;

или вы можете отключить автоматический срок действия пароля для все пользователи:

SET GLOBAL default_password_lifetime = 0;

как отметил Mertaydin в комментариях, чтобы сделать это постоянным, добавьте следующую строку в my.cnf файл MySQL читается при запуске, под [mysqld] группа настроек. Расположение my.cnf зависит от вашей установки (например, Windows, или Homebrew на OS X, или установщик), и хотите ли вы это для каждого пользователя на Unix или global:

[mysqld] default_password_lifetime = 0 (Здесь могут быть и другие настройки...)

посмотреть MySQL docs на конфигурационных файлах.


недавно я прошел через ту же проблему при установке mysql на Mac os x capitan. Я не нашел здесь правильного ответа, поэтому добавил этот ответ.

MySql в текущих версиях генерирует временный пароль при установке mysql. Используйте этот пароль для установки нового пароля с помощью утилиты mysqladmin, как показано ниже;

/ usr / local / mysql/bin / mysqladmin-u root-p ' 'пароль' '

надеюсь, это поможет ты и другие.


просто скачайте MySQL workbench для входа в систему. Он предложит вам изменить пароль немедленно и автоматически.


запустить MYSQL в безопасном режиме

mysqld_safe --skip-grant-tables &

подключение к серверу MYSQL

mysql -u root

выполнить команды SQL для сброса пароля:

use mysql;
SET GLOBAL default_password_lifetime = 0;
SET PASSWORD = PASSWORD('new_password');

последний шаг, перезапустите службу mysql


я столкнулась с этой проблемой несколько дней назад. Для лучшего решения для версии 5.7 MySQL; войдите в консоль mysql и измените свой пароль следующей командой:

ALTER USER `root`@`localhost` IDENTIFIED BY 'new_password', `root`@`localhost` PASSWORD EXPIRE NEVER;

предупреждение: это позволит любому пользователю войти

Я должен был попробовать что-то другое. Так как мой пароль root истек и изменение не было вариантом, потому что

Column count of mysql.user is wrong. Expected 45, found 46. The table is probably corrupted

временно добавлять skip-grant-tables под [mysqld] на my.cnf и перезапуск mysql сделал трюк


Это сработало для меня:

ALTER USER "root" @ "localhost", идентифицированный "yourpassword", "root" @ "localhost" пароль истекает никогда;


истечение срока действия пароля является новой функцией в MySQL 5.6 или 5.7.

ответ ясен: используйте клиент, который способен изменять истекший пароль (я думаю, что Sequel Pro может это сделать).

mysqli библиотека, очевидно, не в состоянии изменить истекший пароль.

Если у вас ограниченный доступ к localhost, и у вас есть только консольный клиент, стандартный клиент mysql может это сделать.


все эти ответы используют консоли Linux для доступа к MySQL.

Если вы находитесь в Windows и используете WAMP, вы можете начать с открытия консоли MySQL (click WAMP icon->MySQL->MySQL console).

затем он попросит вас ввести свой текущий пароль, введите его.

и затем введите SET PASSWORD = PASSWORD('some_pass');


самое лучшее легкое решение:

[PATH MYSQL]/bin/mysql -u root
[Enter password]
SET GLOBAL default_password_lifetime = 0;

и далее работает нормально.


перезапустите сервер MySQL с опцией --skip-grant-tables А затем установить новый пароль root

$ mysql -u root
mysql> USE mysql;
mysql> UPDATE user SET password=PASSWORD("NEWPASSWORD") WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> quit

теперь, если вам нужно, вы можете обновить mysql.таблица пользователя (поле password_expired= 'N'), чтобы не истечь срок действия пароля.


Откройте консоль MySQL и введите SET PASSWORD = 'your password'; а затем нажмите клавишу ENTER, которая установит ваш определенный пароль для пользователя root.

вы можете только написать SET PASSWORD = "; который установит пароль как пустой для пользователя root.


в Windows в phpmyadmin посмотрите переменные: default_password_lifetime и переключите его на 0 (вместо 360), наслаждайтесь.

это возможно, чем mySQL снова займет 360 дней,поэтому добавьте в мой.ini:

[mysqld]
default_password_lifetime=0

и перезапустите mysql.