Установка пароля пользователя root MySQL на OS X


235

Я только что установил MySQL на Mac OS X. Следующим шагом была установка пароля пользователя root, поэтому я сделал это следующим образом:

  1. Запустите приложение терминала для доступа к командной строке Unix.
  2. Под приглашением Unix я выполнил эти команды:

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

Но когда я выполняю команду

$ ./mysql -u rootвот ответ:

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 224
Server version: 5.5.13 MySQL Community Server (GPL)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

Я могу попасть в mysqlкомандную строку без пароля!

Почему это?

Ответы:


320

Попробуйте ввести команду FLUSH PRIVILEGESпри входе в терминал MySQL. Если это не сработает, попробуйте следующий набор команд в терминале MySQL

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

Измените NEWPASSWORD с любым паролем, который вы хотите. Должно быть все готово!

Обновление : Начиная с MySQL 5.7, passwordполе было переименовано authentication_string. При смене пароля используйте следующий запрос для смены пароля. Все остальные команды остаются прежними:

mysql> UPDATE user SET authentication_string=PASSWORD("NEWPASSWORD") WHERE User='root';

Обновление : 8.0.15 (возможно, уже до этой версии) функция PASSWORD () не работает, как упомянуто в комментариях ниже. Вы должны использовать:

UPDATE mysql.user SET authentication_string='password' WHERE User='root';


24
В MySQL 5.7 и далее имя столбца изменилось. Вам нужно будет использовать UPDATE mysql.user SET authentication_string=PASSWORD('password') WHERE User='root';вместо этого.
Карлос П

Спасибо за внимание. Я отредактирую свой ответ, чтобы отразить соответственно.
Скотт

8
Кроме того, похоже, что функция PASSWORD () устарела, и вы должны просто поставить 'password'правую часть равенства
kvn

6
Если вы не можете войти, как это поможет?
Джейк N

11
после выполнения этих шагов. Когда я снова попытался войти в систему с новым паролем, я получилERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
Maraw

197

Если вы не помните пароль, который вы установили для пользователя root, и вам необходимо его сбросить, выполните следующие действия:

  1. Остановите сервер MySQL, это зависит от установки
  2. Запустите сервер в безопасном режиме с обходом привилегий.

sudo mysqld_safe --skip-grant-tables;

  1. В новом окне подключиться к базе данных, установить новый пароль и сбросить разрешения и выйти:

mysql -u root

Для MySQL старше MySQL 5.7 используйте:

UPDATE mysql.user SET Password=PASSWORD('your-password') WHERE User='root';

Для MySQL 5.7+ используйте:

USE mysql;

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

Обновить и выйти:

FLUSH PRIVILEGES;

\q

  1. Остановите сервер в безопасном режиме и снова запустите ваш обычный сервер. Новый пароль должен работать сейчас. Работал как шарм для меня :)

4
Это было прекрасно, спасибо! В Mac OSx Mavericks (2014) используйте sudo / Library / StartupItems / MySQLCOM / MySQLCOM stop | start | restart
Крис Адамс,

2
passwordнужно быть authentication_stringсейчас.
zx1986

После MySQL 5.7 так и должно быть UPDATE user SET authentication_string=PASSWORD("NEWPASSWORD") WHERE User='root';, как сказал @Scott.
zx1986

Спасибо добавлю, что
Radtek

1
На MacOSX , когда MySql установлен с «Preference„Pane“вариант (меню Apple -> Системные настройки ...), я обнаружил , что я первый должен был остановить MYSQL , используя панель настроек для полного шаге 1 гнушается. sudo killНе работать как Mac OSx будет автоматически перезапускать новый msql мгновенно.После того как я остановил mysql с помощью панели настроек, я мог вручную запуститьmysqld_safe --skip-grant-tables
toddcscar

85

После того, как вы установили MySQL, вам нужно будет установить пароль root. Если вы не устанавливаете пароль root, тогда, ну, нет пароля root, и вам не нужен пароль для входа.

Итак, как говорится, вам нужно установить пароль root.

Используя терминал, введите следующее:

Установка: Установите пароль пользователя root:

/usr/local/mysql/bin/mysqladmin -u root password NEW_PASSWORD_HERE

Если вы ошиблись или хотите изменить пароль root, используйте следующее:

Изменить пароль пользователя root:

cd /usr/local/mysql/bin/
./mysql -u root -p
> Enter password: [type old password invisibly]

use mysql;
update user set password=PASSWORD("NEW_PASSWORD_HERE") where User='root';
flush privileges;
quit

5
Для тех , у кого есть MySQL 5.7, вы должны использовать update user set authentication_string=PASSWORD("NEW_PASSWORD_HERE") where User='root';вместо использованияset password=...
ДПМ

66

Инструкции, представленные на сайте MySQL, настолько понятны, чем вышеупомянутые

  1. $ sudo /usr/local/mysql/support-files/mysql.server stop
  2. $ sudo /usr/local/mysql/support-files/mysql.server start --skip-grant-tables
  3. /usr/local/mysql/bin/mysql
  4. mysql> FLUSH PRIVILEGES;
  5. mysql> ALTER USER 'root' @ 'localhost', ОПРЕДЕЛЯЕМЫЙ 'MyNewPass';
  6. mysql> exitили Ctrl + z
  7. $ sudo /usr/local/mysql/support-files/mysql.server stop
  8. $ sudo /usr/local/mysql/support-files/mysql.server start
  9. /usr/local/mysql/support-files/mysql -u root -p
  10. Введите новый пароль т.е. MyNewPass

Ссылка: http://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html


2
в Mac OS 10.12.6 выдает ошибку после 2-й команды ERROR! Сервер вышел без обновления файла PID (/usr/local/mysql/data/myhostname.pid).
diEcho

Спасибо за указание, где найти документацию. Это немного сбивает с толку в Mac, когда вы также можете использовать sudo launchctl unload -F /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist и sudo launchctl unload -F /Library/LaunchDaemons/com.oracle.oss .mysql.mysqld.plist, чтобы остановить и запустить mysql. Использование sudo /usr/local/mysql/support-files/mysql.server stop кажется лучшим подходом.
Даниил

59
  1. Остановите сервер mysqld.

    • Mac OSX: System Preferences > MySQL>Stop MySQL Server
    • Linux (из терминала): sudo systemctl stop mysqld.service
  2. Запустите сервер в безопасном режиме с обходом привилегий

    • Из терминала: sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables
  3. В новом окне терминала:

    • sudo /usr/local/mysql/bin/mysql -u root
  4. Это откроет командную строку mysql. Отсюда введите:

    • UPDATE mysql.user SET authentication_string=PASSWORD('NewPassword') WHERE User='root';

    • FLUSH PRIVILEGES;

    • quit

  5. Остановите сервер mysqld снова и перезапустите его в обычном режиме.

    • Mac OSX (из терминала): sudo /usr/local/mysql/support-files/mysql.server restart
    • Терминал Linux: sudo systemctl restart mysqld

1
Для запуска 5.7.23 на High Sierra это работает отлично. Спасибо.
Даниил

В MySQL 8.0.11 функция set на 4-м шаге была удалена. Вы проверяете здесь, это работает. stackoverflow.com/a/52579886/621951
Гюнай Гюлтекин

22

Для нового Mysql 5.7 почему-то команды bin Mysql не прикреплены к оболочке:

  1. Перезагрузите Mac после установки.

  2. Запустите Mysql:

    Системные настройки> Mysql> кнопка «Пуск»

  3. Перейдите в папку установки Mysql в терминале:

    $ cd /usr/local/mysql/bin/

  4. Доступ к Mysql:

    $ ./mysql -u root -p

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

  1. В терминале Mysql смените пароль:

    mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPassword';


16

В терминале напишите mysql -u root -pи нажмите Return. Введите текущий пароль MySQL, который вы должны были записать вниз. И установить пароль SET PASSWORD = PASSWORD('new_password');

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


10

Если вы забыли пароль root для MySQL, не можете вспомнить или хотите взломать… .. вы можете сбросить пароль базы данных mysql из командной строки в Linux или OS X, если вы знаете пароль пользователя root для этой коробки Вы находитесь на:

(1) Остановите MySQL

sudo /usr/local/mysql/support-files/mysql.server stop

(2) Запустите его в безопасном режиме:

sudo mysqld_safe --skip-grant-tables

(3) Это будет текущая команда до завершения процесса, поэтому откройте другое окно оболочки / терминала и войдите без пароля:

mysql -u root

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

В приведенной выше команде UPDATE просто замените «пароль» своим новым паролем, обязательно оставьте кавычки

(4) Сохранить и довольно

FLUSH PRIVILEGES;

\q

(5) Запустите MySQL

sudo /usr/local/mysql/support-files/mysql.server start

5

Когда я установил OS X Yosemite, у меня возникла проблема с Mysql. Я перепробовал много методов, но ни один из них не сработал. Я действительно нашел довольно простой способ. Попробуйте это.

  1. Сначала войдите в терминал с правами su.

sudo su

  1. остановить MySQL

sudo /usr/local/mysql/support-files/mysql.server stop

  1. запуск в безопасном режиме:

sudo mysqld_safe --skip-grant-tables

  1. откройте другой терминал, войдите в систему как su привилегии, чем, войти в MySQL без пароля

mysql -u root

  1. изменить пароль

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

  1. сбрасывать привилегии

FLUSH PRIVILEGES;

  1. Вы сделали сейчас

Огромное спасибо. Я боролся с этим немного. Это новая вещь в последних версиях MySQL?
jpbourbon

5

Методы, упомянутые в существующих ответах, не работают для MySQL 5.7.6 или новее. Согласно документации MySQL это рекомендуемый способ.

B.5.3.2.3 Сброс пароля root: общие инструкции

MySQL 5.7.6 и позже:

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

Ссылка: https://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html


3

Если вы не можете вспомнить свой пароль, ответ @ radtek сработал для меня, за исключением того, что в моем случае я настроил MySQL, используя brew, что означало, что шаги 1 и 2 его ответа пришлось изменить на:

  1. /usr/local/bin/mysql.server stop

  2. /usr/local/bin/mysqld_safe --skip-grant-tables

Примечание: отсутствие sudo.


3

Я думаю, что это должно работать:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'YOURNEWPASSWORD'

(Обратите внимание, что вы, вероятно, должны заменить root своим именем пользователя, если оно не root)


2

Остановка сервера MySQL

sudo /usr/local/mysql/support-files/mysql.server stop

Запуск MySQL в безопасном режиме

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

Смена пароля root

/usr/local/mysql/bin/mysql -u root

use mysql;
UPDATE user SET authentication_string=PASSWORD('NEW_PASSWORD') WHERE user='root';
FLUSH PRIVILEGES;
exit

тестирование

Бегать /usr/local/mysql/bin/mysql -u root

Теперь введите новый пароль, чтобы начать использовать MySQL.


2

Вот что именно сработало для меня:

  1. Убедитесь, что другой процесс MySQL не запущен. Чтобы проверить это, сделайте следующее:

     a.From the terminal, run this command:
           lsof -i:3306 
       If any PID is returned, kill it using kill -9 PID
     b. Go To System Preferences > MySQL > check if any MySQL instances 
        are running, stop them.
  2. Запустите MySQL с помощью команды:

    sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables
  3. Пароль для каждого пользователя хранится в таблице mysql.user под столбцами User и authentication_string соответственно. Мы можем обновить таблицу как:

    UPDATE mysql.user SET authentication_string='your_password' where User='root'

2

macOS 10.14+ с 5.7.26, установленным из установщика Mac OSX DMG.

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

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

Скопируйте пароль, предоставленный вам открытым терминалом установщика, и сделайте следующее:

mysql -uroot -p
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YOURPASSWORDHERE';


2

Для ссылки на MySQL 8.0.15 + функция password () недоступна. Используйте команду ниже.

Пожалуйста, используйте

UPDATE mysql.user SET authentication_string='password' WHERE User='root';

1

Если вы забыли свой пароль или хотите изменить его на свой mysql:

  1. запустите свой терминал и введите:
sudo su
  1. Введите пропуск для вашей системы
  2. Останови свой mysql:
sudo /usr/local/mysql/support-files/mysql.server stop
  1. Оставьте это окно ОТКРЫТОМ, запустите второе окно терминала и введите здесь:
mysql -u root
  1. И измени свой пароль для mysql:
UPDATE mysql.user SET authentication_string=PASSWORD('new_password') WHERE User='root';

где "новый_пароль" - ваш новый проход. Вам не нужен старый пропуск для MySQL.

  1. Промойте, выйдите и проверьте свой новый проход:
FLUSH PRIVILEGES;
  1. Закройте все окна и проверьте ваш новый пароль на наличие mysql. Удачи.

1

Многое изменилось для MySQL 8. Я нашел следующую модификацию документации MySQL 8.0 «Как сбросить пароль root» работает с Mac OS X.

Создайте временный файл $HOME/mysql.root.txtс SQL для обновления пароля root:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<new-password>';

Это использует, mysql_native_passwordчтобы избежать плагина аутентификации 'caching_sha2_password' не может быть загружена ошибка, которую я получаю, если я опускаю опцию.

Остановите сервер, начните с --init-fileопции установки пароля root, затем перезапустите сервер:

mysql.server stop mysql.server start --init-file=$HOME/mysql.root.txt mysql.server stop mysql.server start


1

Давайте добавим этот обходной путь, который работает на моем ноутбуке!

Mac с Osx Mojave 10.14.5

Mysql 8.0.17 был установлен вместе с homebrew

  • Я запускаю следующую команду, чтобы найти путь MySQL

    brew info mysql

  • Как только путь известен, я запускаю это:

    /usr/local/Cellar/mysql/8.0.17/bin/mysqld_safe --skip-grant-table

  • В другом терминале я запускаю:

    mysql -u root

  • Внутри этого терминала я изменил пароль root с помощью:

    update mysql.user set authentication_string='NewPassword' where user='root';

  • и чтобы закончить, я бегу:

    FLUSH PRIVILEGES;

И вуаля пароль был сброшен.

Ссылки :


1

Вы можете вручную отключить mysql на Mac, нажав  меню Apple и откройте «Системные настройки». Выберите панель настроек «MySQL», затем нажмите кнопку «Остановить MySQL Server», чтобы остановить MySQL Server на Mac.

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

  • Вам нужно будет запустить mysql в режиме skip-grant-tables

$ sudo /usr/local/mysql/support-files/mysql.server start --skip-grant-tables

  • В самом терминале введите эту команду для сброса существующих привилегий

/ usr / local / mysql / bin / mysql mysql> FLUSH PRIVILEGES;

  • Теперь вам нужно изменить пароль пользователя

mysql> ALTER USER 'root' @ 'localhost' ИДЕНТИФИЦИРОВАНО 'newpassword';

mysql> выход

Затем вы можете перейти в меню Apple и открыть «Системные настройки». Выберите панель настроек «MySQL», затем нажмите кнопку «Остановить MySQL Server», чтобы остановить MySQL Server на Mac.

Наконец, вы можете снова перейти в меню Apple и открыть «Системные настройки». Выберите панель настроек «MySQL», затем нажмите кнопку «Запустить MySQL Server», чтобы запустить MySQL Server на Mac.

надеюсь, это поможет


1

Ни один из предыдущих комментариев не решил проблему на моем Mac. Я использовал команды ниже, и это сработало.

$ brew services stop mysql
$ pkill mysqld
$ rm -rf /usr/local/var/mysql/ # NOTE: this will delete your existing database!!!
$ brew postinstall mysql
$ brew services restart mysql
$ mysql -u root

0
mysqld_safe --skip-grant-tables
mysql -u root
UPDATE mysql.user SET authentication_string='yourpasswd' WHERE User='root';
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'yourpasswd';

Мне как-то нужно делать это каждый раз, когда мой Macbook перезагружается. Размещая это для личного ознакомления, надеюсь, это поможет кому-то еще.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.