Я просто стер свой 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
?
php
mysql
macos
osx-elcapitan
КарибуКод
источник
источник
/usr/local/mysql/bin/mysqladmin -u root -p password
Ответы:
Итак, я наконец нашел решение сам.
Сначала я вошел в терминал и набрал:
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');
источник
Сначала я использую:
Предоставление моего текущего пароля для «root». Следующий:
mysql> ALTER USER `root`@`localhost` IDENTIFIED BY 'new_password', `root`@`localhost` PASSWORD EXPIRE NEVER;
Измените
'new_password'
на новый пароль для пользователя root.Это решило мою проблему.
источник
ERROR 1805 (HY000): Column count of mysql.user is wrong. Expected 45, found 46. The table is probably corrupted
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 в первый раз.
источник
mysqladmin -u [username] -p password
Срок действия пароля 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 или глобально:[mysqld]
default_password_lifetime = 0
(Здесь могут быть и другие настройки ...)См. Документацию MySQL по файлам конфигурации .
источник
Недавно я столкнулся с той же проблемой при установке mysql на Mac OS X Capitan. Я не нашел здесь правильного ответа, поэтому добавил этот ответ.
MySql в текущих версиях генерирует временный пароль при установке mysql. Используйте этот пароль, чтобы установить новый пароль с помощью утилиты mysqladmin, как показано ниже;
Надеюсь, это поможет вам и другим.
источник
Просто скачайте рабочую среду MySQL, чтобы войти в систему. Она предложит вам немедленно и автоматически изменить пароль.
источник
запустить MYSQL в безопасном режиме
mysqld_safe --skip-grant-tables &
Подключиться к серверу MYSQL
выполнить команды 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;
источник
ВНИМАНИЕ: это позволит любому пользователю войти в систему
Пришлось попробовать кое-что еще. Поскольку срок действия моего корневого пароля истек, его нельзя было изменить, потому что
Column count of mysql.user is wrong. Expected 45, found 46. The table is probably corrupted
temporarly добавление
skip-grant-tables
Under[mysqld]
вmy.cnf
и перезапустить MySQL сделал трюкисточник
В Windows в phpmyadmin посмотрите в Variables: default_password_lifetime и переключите его на 0 (вместо 360), наслаждайтесь.
Возможно, mySQL снова займет 360 дней, поэтому добавьте в my.ini:
[mysqld] default_password_lifetime=0
И перезапустите mysql.
источник
Это сработало для меня:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'yourpassword','root'@'localhost' PASSWORD EXPIRE NEVER;
источник
перезапустите сервер 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'), чтобы не истек срок действия пароля.
источник
mysql -u root
я получаю эту ошибку:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
mysql -u root -p
то, что она запросила у меня пароль, который я ввел. Ваша следующая команда не сработала для меня, потому что она сказалаYou must reset your password using ALTER USER statement before executing this statement.
Все эти ответы используют консоли 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;
а потом отлично работает.
источник
Эта работа для меня:
Источник: https://www.diariodeunprogramador.net/fallo-al-conectar-mysql-your-password-expired/
Войдите как root:
а потом деактивируете автоматическое истечение срока действия паролей всех пользователей:
SET GLOBAL default_password_lifetime = 0;
источник
Срок действия пароля - новая функция в MySQL 5.6 или 5.7.
Ответ очевиден: используйте клиент, способный изменять пароль с истекшим сроком действия (я думаю, что Sequel Pro может это сделать).
Очевидно, что библиотека MySQLi не может изменить пароль с истекшим сроком действия.
Если у вас ограниченный доступ к localhost и у вас есть только консольный клиент, стандартный клиент mysql может это сделать.
источник
Откройте консоль MySQL и введите SET PASSWORD = 'ваш пароль'; а затем нажмите клавишу ENTER, которая установит ваш пароль для пользователя root.
Вы можете написать только SET PASSWORD = ''; который установит пароль как пустой для пользователя root.
источник
Я сделал что-то подобное.
UPDATE mysql.user SET authentication_string = PASSWORD(''), password_expired = 'N' WHERE User = 'root' AND Host = 'localhost';
источник
You must reset your password using ALTER USER statement before executing this statement.
Просто откройте MySQL Workbench, выберите [Instance] Startup / Shutdown и щелкните на стартовом сервере. Это сработало для меня
источник