Истек срок действия пароля 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 ответов:
Итак, я, наконец, нашел решение сам.
сначала я зашел в терминал и набрал:
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') не истекает срок действия пароля.