Истекает пароль 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.
Как использовать reset пароль с помощью ALTER USER
?
Ответы
Ответ 1
Итак, я наконец нашел решение самостоятельно.
Сначала я вошел в терминал и набрал:
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');
Ответ 2
Во-первых, я использую:
mysql -u root -p
Предоставление моего текущего пароля для "root".
Далее:
mysql> ALTER USER `root`@`localhost` IDENTIFIED BY 'new_password',
`root`@`localhost` PASSWORD EXPIRE NEVER;
Измените 'new_password'
на новый пароль для пользователя root.
Он решил мою проблему.
Ответ 3
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.
Это похоже на ответ pavan sachi, но с подсказками с паролями.
Моя ошибка была "# 1862 - Срок действия вашего пароля истек. Для входа в систему вы должны изменить его с помощью клиента, который поддерживает истекшие пароли". на первом экране входа phpMyAdmin.
Ответ 4
Срок действия пароля 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 или установщика) и от того, хотите ли вы это для -u ser в Unix или в глобальном масштабе:
[mysqld] default_password_lifetime = 0
(здесь могут быть и другие настройки...)
Смотрите документы MySQL по файлам конфигурации.
Ответ 5
Недавно я просмотрел ту же проблему при установке mysql на mac os x capitan.
Я не нашел здесь правильного ответа, поэтому добавив этот ответ.
MySql в текущих версиях генерирует временный пароль при установке mysql. Используйте этот пароль для установки нового пароля с помощью утилиты mysqladmin, как показано ниже:
/usr/local/mysql/bin/mysqladmin -u root -p '< your temp password > ' пароль '< ваш новый пароль > '
Надеюсь, это поможет вам и другим.
Ответ 6
Просто загрузите MySQL workbench для входа в систему. Он предложит вам сразу и автоматически изменить пароль.
Ответ 7
запустить MYSQL в безопасном режиме
mysqld_safe --skip-grant-tables &
Подключение к серверу MYSQL
mysql -u root
выполните команды SQL с паролем reset:
use mysql;
SET GLOBAL default_password_lifetime = 0;
SET PASSWORD = PASSWORD('new_password');
Последний шаг, перезапустите службу mysql
Ответ 8
Я столкнулся с этой проблемой несколько дней назад. Для лучшего решения для версии 5.7 MySQL; войдите в свою консоль mysql и измените свой пароль с помощью следующей команды:
ALTER USER `root`@`localhost` IDENTIFIED BY 'new_password', `root`@`localhost` PASSWORD EXPIRE NEVER;
Ответ 9
ВНИМАНИЕ: это позволит любому пользователю войти
Я должен был попробовать что-то еще. Так как мой пароль root истек, и изменение не было вариантом, потому что
Column count of mysql.user is wrong. Expected 45, found 46. The table is probably corrupted
временно добавив skip-grant-tables
под [mysqld]
в my.cnf
и перезапустив mysql, добился цели
Ответ 10
Это сработало для меня:
ALTER USER 'root' @'localhost' IDENTIFIED BY 'yourpassword', 'root' @'localhost' PASSWORD EXPIRE NEVER;
Ответ 11
Истечение срока действия пароля - это новая функция в MySQL 5.6 или 5.7.
Ответ ясен: используйте клиент, способный сменить пароль с истекшим сроком действия (я думаю, Sequel Pro может это сделать).
Библиотека MySQLi, очевидно, не может изменить истекший пароль.
Если у вас ограниченный доступ к локальному хосту, и у вас есть только консольный клиент, стандартный клиент mysql может это сделать.
Ответ 12
Все эти ответы используют Linux-консоли для доступа к MySQL.
Если вы используете Windows и используете WAMP, вы можете начать с открытия консоли MySQL (click WAMP icon->MySQL->MySQL console
).
Затем он попросит вас ввести ваш текущий пароль, ввести его.
И затем введите SET PASSWORD = PASSWORD('some_pass');
Ответ 13
лучшее решение:
[PATH MYSQL]/bin/mysql -u root
[Enter password]
SET GLOBAL default_password_lifetime = 0;
а затем отлично работает.
Ответ 14
На Windows в phpmyadmin посмотрите в Variables: default_password_lifetime и переключите его на 0 (вместо 360), наслаждайтесь.
Возможно, MySQL снова займет 360 дней, поэтому добавьте в my.ini:
[mysqld]
default_password_lifetime=0
И перезапустите MySQL.
Ответ 15
перезапустить сервер 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.user(поле password_expired = 'N'), чтобы не истекать срок действия пароля.
Ответ 16
Откройте консоль MySQL и введите SET PASSWORD = 'ваш пароль';
а затем нажмите клавишу ENTER, которая установит ваш пароль для пользователя root.
Вы можете писать только SET PASSWORD = '';
который установит пароль как пустой для пользователя root.
Ответ 17
Эта работа для меня:
Источник: https://www.diariodeunprogramador.net/fallo-al-conectar-mysql-your-password-expired/
Войдите в систему как root:
mysql -u root -p
и затем вы отключите автоматическое истечение срока действия паролей всех пользователей:
SET GLOBAL default_password_lifetime = 0;