Невозможно получить доступ к MySQL после того, как он автоматически сгенерировал временный пароль
я стер и установил OSX 10.11 El Capitan и я следовал через в этом уроке и MySQL работает на новой OS X. первым шагом было загрузить MySQL для Mac OS X 10.9 (x86, 64-бит), архив DMG (работает на 10.11, они рекомендуются в учебнике). Пока я заканчивал установку MySQL, я получил сообщение о том, что:
2015-10-25T02:10:54.549219Z 1 [Note] A temporary password is generated for root@localhost: R>gFySuiu23U
If you lose this password, please consult the section How to Reset the Root Password in the MySQL reference manual.
это было странно, я никогда не видел такого сообщения. После этого я начал MySQL через панель настроек, а затем использовать /usr/local/mysql/bin/mysql -v команда на терминале для другого шага. Я получил сообщение об ошибке, говорящее, что :
ERROR 1045 (28000): Access denied for user 'cheetah'@'localhost' (using password: NO)
Я также пытался получить доступ к базе данных через Sequel Pro используя root в качестве имени пользователя и пустого пароля, я получил сообщение об отказе в доступе, в котором говорится:
Unable to connect to host 127.0.0.1 because access was denied.
Double-check your username and password and ensure that access from your current location is permitted.
MySQL said: Access denied for user 'root'@'localhost' (using password: NO)
хорошо, я также попробовал это снова, используя root в качестве имени пользователя, но 'R>gFySuiu23U' в качестве пароля (который был сгенерирован из MySQL). Я получил соединение не удалось сообщение о том, что :
Unable to connect to host 127.0.0.1, or the request timed out.
Be sure that the address is correct and that you have the necessary privileges, or try increasing the connection timeout (currently 10 seconds).
MySQL said: Your password has expired. To log in you must change it using a client that supports expired passwords.
как я могу решить эту проблему? Я помню, что MySQL никогда не получал автоматически сгенерированный временный пароль, как это, не так ли ?
14 ответов:
попробуйте это:
mysql -u root -h 127.0.0.1 -p Enter password: (enter the random password here)Ref:https://dev.mysql.com/doc/refman/5.7/en/data-directory-initialization-mysqld.html
после этого вы можете сбросить пароль используя
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new-password';
Это то, что работало для меня на OS X Yosemite под управлением MySql v5.7 (установлен из .употр).
cd /usr/local/mysql/bin ./mysql -u root -p --connect-expired-password(введите временный пароль, созданный установщиком.)
это приведет вас в режим песочницы и
mysql>запрос. Затем установите нужный пароль root с помощью УСТАНОВИТЬ ПАРОЛЬ:SET PASSWORD FOR 'root'@'localhost' = PASSWORD('mySuperSecretPassword');
теперь, когда пароль, сгенерированный MySQL, истек, проблема сводится к тому, чтобы заставить этот пароль работать снова (1) или генерировать новый (2). Это может быть достигнуто путем запуска MySQL с опцией skip-grant-tables, которая заставила бы его игнорировать права доступа:
остановите свой сервер MySQL.
добавьте ниже в конце раздела [mysqld] моего.CNF файл и сохранить оно.
skip-grant-tablesзапустите сервер MySQL.
в терминале, типа
mysql -u root -pчтобы попасть в командную строку MySQL.
в командной строке введите
USE mysql;чтобы попасть в базу данных mysql, где он хранит пользователей базы данных.
тип
UPDATE user SET password_expired = 'N' WHERE User = 'root';чтобы MySQL знал, что пароль не истек (1) или
UPDATE user SET authentication_string = PASSWORD('YourNewPassword'), password_expired = 'N' WHERE User = 'root';чтобы назначить новый пароль YourNewPassword для root (2).
выполнение этих шагов под OSX 10.11 El Capitan и MySQL 5.7.X, должен сделать трюк.
учитывая, что у вас уже установлен MySQL..
откройте окно терминала и введите:
- sudo / usr/local/mysql/support-files / mysql.сервер стоп
- sudo mysqld_safe --skip-grant-tables
поскольку команда, запущенная на Шаге 2, будет находиться в состоянии on going, вам нужно открыть другое окно терминала, а затем тип:
- mysql-u root-p
- обновить mysql.user SET password_expired= 'N', authentication_string=PASSWORD (") где User='root';
- выход;
- sudo / usr/local/mysql/support-files / mysql.перезагрузка сервера
важно: в шаге 2, вы должны заменить ваш пароль.
надеюсь, что он проснется для вас.
истек срок действия пароля MySQL
сброс пароля временно решит проблему, однако, от MySQL 5.7.4 до 5.7.10 (я думаю, чтобы стимулировать лучшую безопасность) значение по умолчанию для
default_password_lifetimeпеременная 360 (около года). Для этих версий, если вы сделаете никаких изменений в этой переменной (или для отдельных учетных записей пользователей) все пароли пользователей истекает через 360 дней.как правило, из скрипта вы можете получить сообщение: "Ваш пароль истек. Чтобы войти в систему, вы должны изменить его с помощью клиента, который поддерживает устаревшие пароли."
так, чтобы предотвратить автоматическое истечение срока действия пароля, войдите в систему как root (
mysql -u root -p), то для клиенты, которые автоматически подключаются к серверу (например, скрипты.) измените параметры истечения срока действия пароля для этих клиентов:
ALTER USER 'script'@'localhost' PASSWORD EXPIRE NEVER;или вы можете отключить автоматическое истечение срока действия пароля для все пользователи:
SET GLOBAL default_password_lifetime = 0;ссылки:
MySQL: истечение срока действия пароля и режим песочницы
MySQL: Политика Истечения Срока Действия Пароля
политика истечения срока действия пароля в MySQL Server 5.7
я запускаю macOS Sierra (10.12.3) и я установил mysql-5.7.17-macos10.12-x86_64.употр.
ответ от @lesley работал для меня за исключением того, что мне нужно было добавить
./чтобы убедиться, что я вызывал двоичный файл mysql в моем текущем рабочем каталоге. Именно там был установлен вышеупомянутый пакет.если вы
cdдо/usr/local/mysql/binи работатьmysql -u root -p --connect-expired-password, вы можете получить следующую ошибку.mysql: unknown option '--connect-expired-password'Я так и сделал. Потому что просто работает
mysqlбез указания пути, вызывается ранее установленная версия клиента MariaDB.так, чтобы убедиться, что вы выполняете правильный двоичный файл, вы можете либо
укажите абсолютный путь
/usr/local/mysql/bin/mysql -u root -p --connect-expired-passwordили относительный путь после изменения директории
cd /usr/local/mysql/bin ./mysql -u root -p --connect-expired-passwordоба способа должны работать. После того, как вы подключены к клиенту, инструкции такие же, как и выше от @lesley.
введите временный пароль генерируется установщиком и устанавливается новый пароль.
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('yourNewPassword');
я столкнулся с той же проблемой. Я следовал руководству по установке из https://www.ntu.edu.sg/home/ehchua/programming/sql/MySQL_HowTo.html и загрузил архив DMG и установил MySQL на мой MAC OS X 10.12.2.
наконец выполнил следующие команды на новом терминале.
cd /usr/local/mysql/bin ./mysql -u root -p --connect-expired-passwordэто сработало.
Ответ 7 работал для меня:
El capitan,MySQLустановлен из dmg и автогенерированный пароль, но обязательноcdдо/usr/local/bin/mysqlперед входом в./mysql -root -pочевидно, но я не в первый раз.теперь чтобы найти, где все мои базы данных и таблицы и как связать их.
этот один сделал трюк для меня:
Как указано в этой ссылке: https://www.variphy.com/kb/mac-os-x-reset-mysql-root-password
выполните все шаги, кроме выполнения
UPDATE mysql.user SET Password=PASSWORD('NewPassword') WHERE User='root';выполнить
UPDATE mysql.user SET authentication_string = PASSWORD('MyNewPass'), password_expired = 'N' WHERE User = 'root' AND Host = 'localhost';и затем выполнить ФЛЕШ ПРИВИЛЕГИИ;
другой способ решить эту проблему - использовать вместо этого более старую версию MySQL.
респект
MySQL version 5.7.9для Mac OS X 10.9 (x86, 64-бит), архив DMG, а затем установить старую версию,MySQL version 5.6.7для Mac OS X 10.9 (x86, 64-бит), архив DMG. Этот вопрос решен. Данный пароль автоматически до окончания инсталляции этой старой версии уже нет, а я может в конечном итоге получить доступ к базе данных, используя root в качестве имени пользователя и пароля. Все работает как оберег!
Я установил view brew, и у меня было такое же сообщение об ошибке, пока я не заметил эту оговорку:
мы установили вашу базу данных MySQL без пароля root. Чтобы обеспечить его запуск: mysql_secure_installation
для подключения выполнить: mysql-uroot
чтобы запустить запуск mysql сейчас и перезапустить при входе в систему: brew services start mysql
или, если вы не хотите/нужна фоновая служба вы можете просто запустить: mysql.сервер старт
Я обошел эту проблему, запустив
'mysql -u root -p --connect-expired-password'Затем введите истекший пароль автоматического поколения из mysql. Наконец-то. Выбранная база данных mysql с'use mysql'а затем обновил пользователя 'root' pw с помощью'ALTER USER 'root'@'localhost' IDENTIFIED BY 'your new password'
установка MySQL вручную путем загрузки пакетов в первый раз генерирует пароль по умолчанию для root. Скопируйте и сохраните это. Если не сделано как-то на последовательных переустановках он не показывает, что пароль.
таким образом, вы не можете войти в root. Сделайте следующее :
- найти mysql связанные записи из системы
sudo find / -name mysql- удалите все записи, связанные с mysql, выполнив
rm -rf <mysql_entries_above>- скачать последнюю версию mysql-server и intall оно.
- вам будет подсказано с паролем по умолчанию, который нужно скопировать.
- выполнить
mysql_secure_installationи вставьте этот пароль при запросе root.- затем следуйте инструкциям и изменить пароль администратора при появлении запроса.
Comments