Я установил 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).
- Находим 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.
Комментарии 0