Встановлення пароля користувача MySQL root на 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)
відлиги

197

Якщо ви не пам’ятаєте пароль, встановлений для root, і його потрібно скинути, виконайте наступні дії:

  1. Зупиніть сервер mysqld, це залежить від встановлення
  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 / Бібліотека / StartupItems / MySQLCOM / MySQLCOM зупинка | початок | перезапуск
Chris Adams

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 користувача:

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

Якщо ви допустили помилку або вам потрібно змінити кореневий пароль, використовуйте наступне:

Зміна пароля 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
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> ПРИГОТОВЛЕННЯ ПРИБІЛЬ;
  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/uk/resetting-permissions.html


2
у mac os 10.12.6, воно дає помилку після 2-ї команди ПОМИЛКУ! Сервер вийшов без оновлення 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 зупинки видається кращим підходом.
Даніель

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 на Високій Сьєррі це прекрасно працює. Дякую.
Даніель

У MySQL 8.0.11 функцію встановлення на 4-му кроці було видалено. Ви перевіряєте тут, це працює. stackoverflow.com/a/52579886/621951
Günay Gültekin

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

Якщо ви забули пароль кореневого пароля MySQL, не можете згадати або хочете зламати… .., ви можете скинути пароль бази даних mysql з командного рядка або в Linux або OS X, якщо ви знаєте пароль кореневого користувача поля ви на:

(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/uk/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 на ваше ім'я користувача, якщо воно не є кореневим)


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, перед тим, як виконати цей оператор.

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

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

де "new_password" - ваш новий пропуск. Вам не потрібен старий пропуск для mysql.

  1. Очистіть, закрийте та перевірте свій новий пропуск:
FLUSH PRIVILEGES;
  1. Закрийте всі вікна та перевірте ваш новий пропуск на предмет mysql. Удачі.

1

Багато що змінилося для MySQL 8. Я знайшов наступну модифікацію документації MySQL 8.0 "Як скинути пароль корінця", що працює з Mac OS X.

Створіть тимчасовий файл $HOME/mysql.root.txtіз SQL для оновлення кореневого пароля:

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 був встановлений з домашньою мовою

  • Я запускаю наступну команду, щоб знайти шлях 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, натиснувши menu меню Apple і відкрийте Налаштування системи. Виберіть панель налаштувань «MySQL», потім натисніть кнопку «Зупинити MySQL Server», щоб зупинити MySQL Server на Mac.

Після того, як ви зупините ваш mysql, вам потрібно буде виконати ці кроки.

  • Вам потрібно буде запустити mysql в режимі таблиць пропуску-грантів

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

  • У самому своєму терміналі введіть цю команду, щоб ПРИМІТИТИ існуючі ПРИВИЛЕГИ

/ usr / local / mysql / bin / mysql mysql> ПРИГОТОВЛЕННЯ ПРИВІЛЕГ;

  • Тепер вам потрібно змінити пароль користувача

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.