Пароль 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.