MacOS сбросить root пароль для MySQL

Я установил mysql-сервер на свою macOS Mojave, скачав .dmg пакет с официального сайта MySQL.

При установке mysql, установщик не запрашивал никакого root пароля, но в конце выдал сообщение, что пароль для root - dufQqAt00Z, и сообщение сохранить этот пароль.

Я сохранил себе этот пароль (возможно, не скопировав его полностью?). 

Далее при подключении к mysql, к моему удивлению, ни этот пароль не пустой пароль для root - не подходили для подключения к MySQL:

MacBook-Pro: eugene$ mysql -uroot
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
MacBook-Pro: eugene$ mysql -uroot -pdufQqAt00Z
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

Поэтому, следующие шаги подробно описывают как изменить root пароль в MySQL на маке.

1. Остановить mysql-процесс. Два варианта как остановить mysql в MAC OS:

  • Пишем в spotlight-search "mysql", открывается панелька mysql, где нажимаем остановить процесс (скриншот 1). Либо же открываем System Settings и в них ищем наш MySQL (скриншот 2).
    Mac OS запуск и остановка mysql-демона
    Stop MySQL server on MacOS 13 Ventura
  • Находим pid процесса и убиваем mysql, например так: sudo pkill mysql.

2. Запускаем мускуль в режиме safe с опцией "skip-grant-tables":

sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables

Вот как это выглядит, при необходимости вводим sudo пароль операционной системы:

$ sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables
2019-03-22T11:26:37.6NZ mysqld_safe Logging to '/usr/local/mysql/data/Oncalls-MacBook-Pro.local.err'.
2019-03-22T11:26:37.6NZ mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data

Мы видим сообщение что демон стартанул. Теперь мы будем иметь возможность подключаться к MySQL без ввода пароля (см. пункт 3), так как мы запустили mysql с опцией skip-grant-tables.

3. Подключаемся к MySQL в другой табе терминала, указывая любое имя пользователя и пароль или не указывая вовсе (ведь мы отключили проверку прав в пункте 2). После подключения задаем новый пароль пользователю root:

$ mysql -uroot
UPDATE mysql.user SET authentication_string=PASSWORD("new-psw") WHERE User='root';
FLUSH PRIVILEGES;

Вместо строки new-psw, указывайте желаемый пароль.


UPD. При проверки солюшена На M1 маке:

UPDATE mysql.user SET authentication_string=PASSWORD("new-psw") WHERE User='root';

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '("my-pass") WHERE User='root'' at line 14

Тогда для смены пароля пробуем действовать так:

UPDATE mysql.user SET authentication_string=null WHERE User='root';
FLUSH PRIVILEGES;

exit;

Then:
mysql -u root
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'new-pass';
#you can keep empty new-pass

4. На этом всё, теперь останавливайте mysql, запущенный в safe mode и запукайте в обычном режиме. Подключайтесь к MySQL снова, указывая новый пароль:

mysql -uroot -p

Если вы увидите ошибку: 

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

То задайте новый пароль командой set password:

mysql> SET PASSWORD = PASSWORD('new-pass');
Query OK, 0 rows affected, 1 warning (0.00 sec)

Теперь мы знаем, как изменить MySQL root пароль на macOS.

 
Поисковые запросы, по которым приходили пользователи
 
 
 
 

icon Комментарии 0

Ваш комментарий к статье.. (для авторизованных)

ctrl+enter

icon Вход в систему

зарегистрироваться
НОВЫЕ ПОЛЬЗОВАТЕЛИ