Сбросьте пароль root MySQL с помощью инструкции ALTER USER после установки на Mac


184

Я новичок во всем опыте Mac. Я недавно установил MySQL и, похоже, мне нужно сбросить пароль после установки. Это не позволит мне сделать что-нибудь еще.

Сейчас я уже сбрасываю пароль обычным способом:

update user set password = password('XXX') where user = root;

(Кстати: мне понадобилось много времени, чтобы понять, что MySQL по какой-то странной причине переименовал поле «пароль» в «authentication_string». Я довольно расстроен подобными изменениями.)

К сожалению, похоже, мне нужно сменить пароль другим способом, который мне неизвестен. Может, кто-то здесь уже сталкивался с этой проблемой?

Ответы:


509

Если это НЕ ваш первый раз установки пароля, попробуйте этот метод:

mysql> UPDATE mysql.user SET Password=PASSWORD('your_new_password')
           WHERE User='root'; 

И если вы получите следующую ошибку, существует высокая вероятность того, что вы никогда не устанавливали свой пароль раньше:

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement. 

Чтобы установить свой пароль в первый раз :

mysql> SET PASSWORD = PASSWORD('your_new_password');
Query OK, 0 rows affected, 1 warning (0.01 sec)

Ссылка: https://dev.mysql.com/doc/refman/5.6/en/alter-user.html


10
Спасибо! Очень сбивающее с толку сообщение об ошибке от MySQL!
Ред.

1
Это работало для меня с mysql-5.7.13-osx10.11-x86_64
GiriB

1
После 'mysql> SET PASSWORD = PASSWORD (' your_new_password ');' я получаю следующую ошибку: "ERROR 29 (HY000): файл" ./mysql/user.MYD "не найден (код ошибки: 2 - нет такого файл или каталог). Кто-нибудь может мне помочь ?
Рэй Ким

4
Вы заметите, что вопреки тому, что предлагает MySQL, вы не используете оператор «ALTER USER», а просто «SET PASSWORD» ...
Фабьен Хаддади,

1
Первый пример потенциально пытается установить пароль для другого пользователя, чем тот, который вы используете при отправке этой строки. Второй пытается установить пароль для пользователя, которого вы использовали для входа в MySQL. Таким образом, позже работает.
Hafenkranich

130

Если вы начали использовать MySQL mysql -u root -p

Пытаться ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

Источник: http://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html


1
Спасибо! Это сработало для меня! Я использую mysql-5.7.11-osx10.10-x86_64.
LeArNr

Это сработало; Спасибо! Меня глубоко огорчает, что, хотя MySQL и является такой широко используемой программой, нет единой документации, которую можно установить и быстро запустить.
Шату

Спасибо ! Это помогло мне
Sparw

3
После большого разочарования вариант сработал на монетном дворе 18 mysql 5.7.18:ALTER USER 'root'@'localhost' indentified WITH mysql_native_password BY 'password';
Стив

Миллион спасибо. Это единственное, что сработало для меня.
RandyMy

33

У меня такая же проблема на Mac

Сначала войдите в MySQL с режимом песочницы

mysql -u <user> -p --connect-expired-password

Затем установите пароль

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

Query OK, 0 rows affected, 1 warning (0.01 sec)

У меня работает ~

через: /dba/118852/your-paswssword-has-expired-after-restart-mysql-when-updated-mysql-5-7-8-rcde


1
Кажется довольно сложным, учитывая, что вы должны сделать это, прежде чем вообще использовать базу данных.
seba.wagner

в предупреждении, которое он хочет, чтобы вы использовалиSET PASSWORD FOR 'root'@'localhost' = 'XXXX';
Арсен Захрай

22

Если вы используете MySQL 5.7.6 и выше:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

Если вы используете MySQL 5.7.5 и более ранние версии:

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

Документация MySQL


1
Я использую MySQL 5.7.9, и странная вещь SET PASSWORD = PASSWORD('my_pass')работает для меня. Есть комментарии людей с более свежими версиями, в которых упоминается, что это утверждение работает и для них. Несмотря на это, я поддержал ваш ответ, поскольку вы нашли эту конкретную ссылку в документации по MySQL, о которой ранее никто не упоминал.
Armfoot

MySQL 8 SET PASSWORD скинул и ошибка. ALTER USER работал.
Тимар Иво Батис

13

На MySQL 5.7.x вам нужно переключиться на собственный пароль, чтобы иметь возможность его изменить, например:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'test';

11

Запустите эти:

$ cd /usr/local/mysql/bin
$ ./mysqladmin -u root password 'password'

Тогда беги

./mysql -u root

Это должно войти в систему. Теперь запустите привилегии FLUSH;

Затем выйдите из консоли MySQL и попробуйте войти в систему. Если это не сработает, запустите:

$ mysql -u root
mysql> USE mysql;
mysql> UPDATE user SET authentication_string=PASSWORD("XXXXXXX") WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> quit

Измените xxxxxx на новый пароль. Затем попробуйте войти снова.

Обновить. Смотрите это http://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html

Это должно решить вашу проблему.

Если вы на оракуле попробуйте это

ALTER USER username IDENTIFIED BY password

Нет, извините, это тоже не работает. По крайней мере, больше. Столбец «пароль» был переименован Oracle, кстати. Теперь это называется authentication_string. Но я не могу выполнить эту команду, потому что сначала мне нужно изменить пароль с помощью команды ALTER USER. Это невероятно расстраивает, потому что это не то, как вы обычно обновляете пароль. ALTER должен быть зарезервирован для таблиц, функций и прочего, а не для изменения записей в таблице. Это заявление об обновлении. (извините, что
ругаю

@Shivan Paw: я ожидаю два предупреждения: mysqladmin: [Предупреждение] Использование пароля в интерфейсе командной строки может быть небезопасным. Предупреждение. Поскольку пароль будет отправлен на сервер в виде простого текста, используйте ssl-соединение для обеспечения безопасности пароля. - Я бы посчитал, что пароль обновлен. И действительно, я могу войти в систему с новым паролем. Однако я все еще не могу выполнить какие-либо запросы, так как мне нужно обновить пароль с помощью команды ALTER USER :(.
dengar81

@Shivan Paw: попробуй что? Я уже пытался использовать команды, которые вы предложили. Сброс пароля с помощью команды ./mysqladmin (два предупреждения) и последующее выполнение обновления на mysql.user ... Вторая команда завершается неудачно с сообщением «Вы должны сбросить пароль с помощью ALTER USER [...]»
dengar81

Это единственное решение, которое сработало для меня. Если у вас есть пароль с истекшим сроком в последней версии mysql, он не позволит вам ALTER_USER или SET_PASSWORD.
Аарон Хендерсон

7

Может попробовать это?

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

или

SET PASSWORD FOR 'root'@'%' = PASSWORD('XXX');

В зависимости от того, какой доступ вы используете.

(и не уверен, что вы должны изменить себе имена полей ...)

https://dev.mysql.com/doc/refman/5.0/en/set-password.html


К сожалению, это не работает: ОШИБКА 1820 (HY000): Вы должны сбросить свой пароль, используя инструкцию ALTER USER, прежде чем выполнять эту инструкцию.
dengar81


7

ОБНОВЛЕНИЕ пользователя УСТАНОВИТЬ authentication_string = ПАРОЛЬ ("MyPassWord") ГДЕ Пользователь = 'root'; ОШИБКА 1064 (42000): у вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы найти правильный синтаксис для использования рядом с '("MyPassWord"), ГДЕ пользователь =' root '' в строке 1

Решено с

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

Ссылка с сайта ниже

https://dev.mysql.com/doc/refman/8.0/en/resetting-permissions.html


5

На Ver 14.14 Distrib 5.7.19, for macos10.12 (x86_64), я вошел в кабинет : mysql -uroot -pзатем ввели в сгенерированный пароль с помощью MySQL при установке его. Затем..

ALTER USER 'root'@'localhost' IDENTIFIED BY '<new_password>';

Пример:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Ab1234'; Query OK, 0 rows affected (0.00 sec) mysql> exit Bye $ mysql -uroot -p

И вы можете ввести «Ab1234»


3

Mysql 5.7.24 получить root первый логин

Шаг 1: получить пароль из журнала

 grep root@localhost /var/log/mysqld.log
    Output
        2019-01-17T09:58:34.459520Z 1 [Note] A temporary password is generated for root@localhost: wHkJHUxeR4)w

шаг 2: войдите с ним в MySQL

mysql -uroot -p'wHkJHUxeR4)w'

шаг 3: вы ставите новый пароль root

SET PASSWORD = PASSWORD('xxxxx');

ты получаешь ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

как это исправить?

запустить это SET GLOBAL validate_password_policy=LOW;

Попробуй еще раз SET PASSWORD = PASSWORD('xxxxx');



2

Вот способ, который работает для меня.

MySQL> show databases ;

ОШИБКА 1820 (HY000): перед выполнением этого оператора необходимо сбросить пароль с помощью инструкции ALTER USER.

MySQL> uninstall plugin validate_password;

ОШИБКА 1820 (HY000): перед выполнением этого оператора необходимо сбросить пароль с помощью инструкции ALTER USER.

MySQL> alter user 'root'@'localhost' identified by 'root';

Запрос в порядке, затронуто 0 строк (0,01 с)

MySQL> flush privileges;

Запрос в порядке, затронуто 0 строк (0,03 сек)


1

При использовании SET PASSWORD = PASSWORD('your_new_password');это может привести к сбою

(ОШИБКА 1819 (HY000): ваш пароль не соответствует требованиям текущей политики)

Вы можете использовать, SET GLOBAL validate_password_policy=LOW;чтобы вставить это.


1

в версии 5.7. поле «пароль» было удалено. 'authentication_string' заменить его

use mysql;
update user set authentication_string=password('123456') where user='root';
flush privileges;

0

Я также получил ту же проблему в Mac OS X 10.10.4 (Yosemite). SET ПАРОЛЬ работает для меня. Изменить пароль для mysql- mysql> SET PASSWORD = PASSWORD ('your_password'); Запрос в порядке, затронуто 0 строк, 1 предупреждение (0,01 с)

установите переменную пути к среде Mysql в .bash_profile и добавьте
следующую строку export PATH = $ PATH: / usr / local / mysql / bin, после этого выполните следующую команду: source .bash_profile


0

Возникла проблема после того, как я установил MySQL Workbench и MySQL сервер сообщества. Получил сгенерированный пароль во время установки сервера. Двойной щелчок на существующем локальном экземпляре в рабочей среде вызывает диалоговое окно, в котором я могу установить новый пароль.


0

mysql> SET PASSWORD = PASSWORD('your_new_password'); Это подходит для меня.


0

помните версии 5.7.23 и выше - в пользовательской таблице нет пароля для столбца, а вместо строки аутентификации, поэтому ниже работает при сбросе пароля для пользователя.

update user set authentication_string=password('root') where user='root';
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.