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

180

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

  • Запустите приложение терминала для доступа к командной строке Unix.
  • В командной строке 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 без пароля!

Почему это?

Теги:
macos
passwords
osx

14 ответов

275

Попробуйте выполнить команду 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';
  • 23
    В MySQL 5.7 и далее имя столбца изменилось. Вам нужно будет использовать UPDATE mysql.user SET authentication_string=PASSWORD('password') WHERE User='root'; вместо.
  • 0
    Спасибо за внимание. Я отредактирую свой ответ, чтобы отразить соответственно.
Показать ещё 7 комментариев
172

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

  • Остановить сервер mysqld, это зависит от установки
  • Запустите сервер в безопасном режиме с обходом привилегий

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
  • 0
    Это работало на OSX Mavericks
Показать ещё 8 комментариев
84

После того, как вы установили 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
  • 4
    Для тех, кто имеет MySQL 5.7, вы должны использовать update user set authentication_string=PASSWORD("NEW_PASSWORD_HERE") where User='root'; вместо использования set password=...
38

Инструкции, представленные на веб-сайте 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/support-files/mysql
4) mysql> FLUSH PRIVILEGES;
5) mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
6) Ctrl + z
7) sudo /usr/local/mysql/support-files/mysql.server start
8) /usr/local/mysql/support-files/mysql -u root -p
9) enter the new password i.e MyNewPass

http://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html

  • 1
    в Mac OS 10.12.6 выдает ошибку после 2-й команды ERROR! Сервер вышел без обновления файла PID (/usr/local/mysql/data/myhostname.pid).
  • 0
    Спасибо за указание, где найти документацию. Это немного сбивает с толку в 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 кажется лучшим подходом.
31
  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 Terminal: sudo systemctl restart mysqld
  • 0
    Для запуска 5.7.23 на High Sierra это работает отлично. Благодарю.
  • 0
    В MySQL 8.0.11 функция set на 4-м шаге была удалена. Вы проверяете здесь, это работает. stackoverflow.com/a/52579886/621951
Показать ещё 2 комментария
18

Для новой 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';

15

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

Подробнее см. в этой документации здесь.

10

Если вы забыли пароль администратора MySQL, не помните или хотите перерыть..... вы можете reset пароль базы данных 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. Я пробовал много методов, но никто не работал. На самом деле я нашел довольно простой способ. Попробуйте это.

  • Первый вход в терминал из привилегий 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

FLUSH PRIVILEGES;

  1. Теперь все готово
  • 0
    Огромное спасибо. Я боролся с этим немного. Это новая вещь в последних версиях MySQL?
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

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

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

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

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

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';

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

  1. Сбросьте, выйдите и проверьте свой новый пропуск:
FLUSH PRIVILEGES;
  1. Закройте все окна и проверьте свой новый проход для mysql. Удачи.
0

Многое изменилось для MySQL 8. Я нашел следующее изменение MySQL 8.0 "Как восстановить пароль корневого пароля" работает с 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

0

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

  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'
    

Ещё вопросы

Сообщество Overcoder
Наверх
Меню