Скиньте кореневий пароль MySQL за допомогою оператора ALTER USER після встановлення на Mac


184

Я новачок у всьому досвіді Mac. Нещодавно я встановив MySQL і, здається, мені доведеться скинути пароль після встановлення. Це не дозволить мені робити щось інше.

Тепер я вже скинув пароль звичайним способом:

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

(BTW: мені потрібні віки, щоб зрозуміти, що MySQL з якихось химерних причин перейменував поле "пароль" на "authentication_string". Я дуже засмучений подібними змінами.)

На жаль, здається, мені потрібно змінити пароль іншим, невідомим мені способом. Може хтось тут уже стикався з цією проблемою?

Відповіді:


508

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

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/uk/alter-user.html


10
Дякую! Дуже заплутане повідомлення про помилку з MySQL!
Ред.

1
Це працювало для мене з mysql-5.7.13-osx10.11-x86_64
GiriB

1
Після 'mysql> SET PASSWORD = PASSWORD (' your_new_password ');', я отримую таку помилку: 'ПОМИЛКА 29 (HY000): Файл' ./mysql/user.MYD 'не знайдено (Помилка: 2 - Такого немає файл або каталог) '. Може хтось мені допоможе?
Рей Кім

4
Ви зауважите, що навпаки того, що пропонує MySQL, ви не використовуєте вислів "ALTER USER", а просто "SET PASSWORD" ...
Fabien Haddadi,

1
Перший приклад потенційно намагається встановити пароль для іншого користувача, ніж той, який ви використовуєте під час подання цього рядка. Друга намагається встановити пароль для користувача, який ви використовували для входу в mysql. Таким чином, пізніші роботи.
Хафенкраніч

130

Якщо ви почали використовувати mysql mysql -u root -p

Спробуйте ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

Джерело: http://dev.mysql.com/doc/refman/5.7/uk/resetting-permissions.html


1
Дякую! Це працювало для мене! Я використовую mysql-5.7.11-osx10.10-x86_64.
LeArNr

Це спрацювало; Дякую! Мене це сумно засмучує, що незважаючи на те, що MySQL є настільки широко використовуваною програмою, немає жодної документації, яка б була спроможна встановити та швидко запустити її.
Шату

Дякую ! Це мені допомогло
Спарв

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-update-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 кинув і помилився. АЛЕ ПОТРІБНИК працював.
Тимар Іво Батіс

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/uk/resetting-permissions.html

Це повинно вирішити вашу проблему.

Якщо ви перебуваєте на Oracle, спробуйте це

ALTER USER username IDENTIFIED BY password

Ні, вибачте, це теж не працює. Принаймні, більше не. Стовпчик "пароль" перейменовано в Oracle, btw. Зараз це називається аутентифікація_string. Але я не можу виконати цю команду, тому що спочатку я повинен змінити пароль за допомогою команди ALTER USER. Це неймовірно засмучує, адже ви не традиційно оновлювали б пароль. ALTER слід зарезервувати для таблиць, функцій та інших матеріалів, не змінюючи записів у таблиці. Це твердження Update. (вибачте за
нюх

@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

ОНОВЛЕННЯ користувача SET authentication_string = PASSWORD ("MyPassWord") WHERE User = 'root'; ПОМИЛКА 1064 (42000): ви маєте помилку в своєму синтаксисі SQL; перевірте посібник, який відповідає вашій версії сервера MySQL, чи правильний синтаксис використовувати поблизу '("MyPassWord") WHERE User =' 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 отримати корінь перший логін

крок 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). УСТАНОВИТИ ПАРОЛЬ для мене. Введіть пароль для mysql- mysql> SET PASSWORD = PASSWORD ('your_password'); Запит в порядку, 0 рядків уражено, 1 попередження (0,01 сек)

встановіть змінну контуру середовища Mysql у .bash_profile та додайте нижче
експорт PATH = $ PATH: / usr / local / mysql / bin, після чого запустіть таку команду: source .bash_profile


0

Проблема виникла після того, як я встановив mysql workbench та сервер спільноти mysql. Отриманий пароль під час встановлення сервера. Подвійне клацання на існуючому локальному екземплярі на робочому столі викликало діалогове вікно, де я міг встановити новий пароль.



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.