Истек срок действия пароля 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.

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

EDIT

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

mysql -u root -p

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

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

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

16 70

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

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

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;

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

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

посмотреть MySQL docs on configuration files.

Я недавно прошел через ту же проблему при установке 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

я столкнулась с этой проблемой несколько дней назад. Для лучшего решения для версии MySQL 5.7; войдите в свою консоль 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 сделал трюк

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

изменить пользователя'@'localhost в идентифицируемая как 'ваш пароль','корень'@'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 = 'ваш пароль'; а затем нажмите клавишу ENTER, которая установит ваш определенный пароль для пользователя root.

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

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

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

[mysqld]
default_password_lifetime=0

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