Подтвердить что ты не робот

Не удалось получить доступ к MySQL после автоматического создания временного пароля

Я удалил и установил OSX 10.11 El Capitan, и я прошел через этот учебник, чтобы получить MySQL в новой операционной системе X. Первый шаг было загрузить MySQL для Mac OS X 10.9 (x86, 64-bit), DMG Archive (работает в 10.11, рекомендуется в учебнике). Пока я заканчивал установку MySQL, я получил сообщение о том, что:

2015-10-25T02:10:54.549219Z 1 [Note] A temporary password is generated for [email protected]: 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 никогда не получал автоматически созданный временный пароль, как это, не так ли?

4b9b3361

Ответ 2

Теперь, когда пароль MySQL был сгенерирован, проблема сводится к тому, чтобы этот пароль снова работал (1) или генерировал новый (2). Это можно сделать, запустив MySQL с опцией skip-grant-tables, которая заставит его игнорировать права доступа:

  • Остановите свой сервер MySQL.

  • Добавьте в конец раздела [mysqld] файла my.cnf таблицы skip-grant-tables и сохраните их.

  • Запустите сервер MySQL.

  • В терминале введите

    mysql -u root -p

чтобы войти в командную строку MySQL.

  1. В командной строке введите

    USE mysql;

чтобы попасть в базу данных mysql, где он хранит пользователей базы данных.

  1. Введите

    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).

Ответ 3

Это то, что сработало для меня на OS X Yosemite, запустив MySql v5.7 (установленный из .dmg).

cd /usr/local/mysql/bin
./mysql -u root -p --connect-expired-password

(Введите временный пароль, сгенерированный установщиком.)

Это приведет вас в режим песочницы и mysql>. Затем установите желаемый пароль root с помощью SET PASSWORD:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('mySuperSecretPassword');

Ответ 4

Выполнение этих действий под OSX 10.11 El Capitan и MySQL 5.7.X должно сделать трюк.

Учитывая, что у вас уже установлен MySQL, тогда..

Откройте окно терминала и введите:

  • sudo/usr/local/mysql/support-files/mysql.server stop
  • sudo mysqld_safe --skip-grant-tables

Поскольку команда, запущенная на шаге 2, будет находиться в состоянии перехода, вам нужно открыть другое окно терминала, а затем введите:

  • mysql -u root -p
  • UPDATE mysql.user SET password_expired = 'N', authentication_string = PASSWORD ('') WHERE Пользователь = 'root';
  • бросить курить;
  • sudo/usr/local/mysql/support-files/mysql.server restart

Важно: на шаге 2 вы должны заменить свой пароль.

Надеюсь, это будет для вас.

Ответ 5

Я запускаю macOS Sierra (10.12.3), и я установил mysql-5.7.17-macos10.12-x86_64.dmg.

Ответ от @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'); 

Ответ 6

Срок действия пароля MySQL истек

Сброс пароля временно разрешит проблему, начиная с MySQL 5.7.4 до 5.7.10 (я думаю, что для повышения безопасности) значение по умолчанию для переменной default_password_lifetime равно 360 (в год). Для этих версий, если вы не вносите никаких изменений в эту переменную (или в отдельные учетные записи пользователей), все пользовательские пароли истекают через 360 дней.

Как правило, из script вы можете получить сообщение: "Срок действия вашего пароля истек. Для входа в систему вы должны изменить его с помощью клиента, который поддерживает истекшие пароли".

Таким образом, чтобы предотвратить автоматическое истечение срока действия пароля, войдите в систему под учетной записью root (mysql -u root -p), затем для клиентов, которые автоматически подключаются к серверу (например, сценарии.), изменяют настройки срока действия пароля для этих клиентов:

ALTER USER 'script'@'localhost' PASSWORD EXPIRE NEVER;

или вы можете отключить автоматическое истечение срока действия пароля для всех пользователей:

SET GLOBAL default_password_lifetime = 0;

Ссылки:

MySQL: срок действия пароля и режим Sandbox
MySQL: политика истечения срока действия пароля
Политика истечения срока действия пароля в MySQL Server 5.7

Ответ 7

Я столкнулся с той же проблемой. Я выполнил руководство по установке из 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

Это сработало.

Ответ 8

Ответ 7 работал у меня: El capitan, MySQL установлен из dmg и автогенерированного пароля, но до cd до /usr/local/bin/mysql перед тем как входить ./mysql -root -p очевидно, но я не первый раз.

Теперь найдите, где находятся все мои базы данных и таблицы и как их связать.

Ответ 9

Для Mysql 5.7 я использую

shell $ > sudo grep 'временный пароль'/var/log/mysqld.log

Ответ 10

Другой способ решить эту проблему - вместо этого использовать более старую версию MySQL.

Я удалил MySQL version 5.7.9 для Mac OS X 10.9 (x86, 64-bit), DMG Archive, а затем установил более старую версию, MySQL version 5.6.7 для Mac OS X 10.9 (x86, 64-bit), DMG Archive. Эта проблема решена. Данный пароль с автогенерированием до завершения установки этой более старой версии ушел, и я могу в конечном итоге получить доступ к базе данных, используя root как имя пользователя и пустой пароль. Все работает как шарм!

Ответ 11

Я установил view brew, и у меня было такое же сообщение об ошибке, пока я не заметил это оговорку:

Мы установили вашу базу данных MySQL без пароля root. Чтобы обеспечить его запуск:     mysql_secure_installation

Чтобы подключить запуск:     mysql -uroot

Чтобы начать запуск mysql и перезагрузиться при входе в систему:    brew services start mysql

Или, если вам не нужна/нужна фоновая служба, которую вы можете запустить:   mysql.server start

Ответ 12

Я обошел эту проблему, запустив   'mysql -u root -p --connect-expired-password' Затем введите истекший пароль автогенератора из mysql. Наконец, вступил. Выбранный mysql db с   'use mysql' а затем обновил пользовательский "root" pw с помощью   'ALTER USER 'root'@'localhost' IDENTIFIED BY 'your new password'