Корінний пароль домашнього браузера MacOSX mysql


116

Чомусь MySQL припинив надання доступу для root. Видалення та перевстановлення програми Homebrew. Свіжі встановлення, свіжі таблиці, але коли я входжу

mysql -u root -p

Я отримую цю помилку:

Доступ заборонено користувачеві 'root' @ 'localhost' (використовуючи пароль: НІ)

Я перевстановив MySQL п'ять разів, але він все ще запитує пароль. Як це виправити?


Існує майже точне питання у суперпользователя. Виконайте наступні дії: superuser.com/a/400345
Ікар

13
Просто запустіть mysql_secure_installationі дайте відповіді на запитання, прості
Абхінав Сінгх

8
Команда mysql_secure_installation підкаже кореневий пароль; якщо ви це встановили і забули, ця процедура не допоможе.
JohnG

1
Якщо заварювати встановлений MySQL 5.7, виконайте наступні дії: stackoverflow.com/a/33924648/133106
mrucci

FWIW mysql -u rootпрацював тут ...
rogerdpack

Відповіді:


115

Просто запустіть цю команду (де NEWPASSваш пароль):

$(brew --prefix mysql)/bin/mysqladmin -u root password NEWPASS

У мене була така ж помилка і виправлена ​​саме так.


16
Працювали для мене. Очевидно (можливо), знак долара ($) повинен бути введений як частина команди (це не просто запит оболонки).
варильні панелі

3
Я рекомендую не включати NEWPASS у команду, щоб уникнути зберігання у файлі історії вашої оболонки. Ця команда автоматично запитає про введення, якщо ви запускаєте її без пропуску, тому немає ніякої причини для цього. :)
Леві Фігейра

4
якщо використовуєте mariadb:$(brew --prefix mariadb)/bin/mysqladmin -u root password NEWPASS
bryceadams

8
Не працює для мене з mariadb (навіть із приміткою @bryceadams): / usr / local / opt / mariadb / bin / mysqladmin: помилка підключення до сервера на "localhost": "Не вдалося отримати доступ для користувача" root "@" localhost " '
trainoasis

3
для mariadb, якщо ви отримуєте доступ до користувача відмовлено:sudo $(brew --prefix mariadb)/bin/mysqladmin -u root password NEWPASS
upful

110

Жоден із них не працював на мене. Я думаю, у мене вже був mysql десь на моєму комп’ютері, тому пароль там був встановлений чи щось таке. Провівши години, намагаючись вирішити кожне рішення, це для мене працювало:

$ 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 -uroot

весь кредит на @Ghrua


6
попередні посади не працювали для мене, але ця, поки руйнівна, працювала чудово.
Глина

1
коли ви ввійшли в систему mysql, використовуйте ALTER USER 'root'@'localhost' IDENTIFIED BY 'YOURNEWPASSWORD';для встановлення нового пароля root.
Мартін Браун

Це працювало для мене, не видаляючи моєї наявної бази даних
Mwirabua Tim

Нарешті правильне робоче рішення. @ 2020 MacOs каталіна.
Міндоўг Курліс

Це працювало для мене, коли попереднього рішення не було. Дякую!
Лес Браун

65

Якщо ви ненавмисно встановили і забули пароль root, і не хочете стерти всі свої бази даних і почати заново, тому що ви ліниві і забули створити резервне рішення на місці, і ви використовуєте досить недавню установку Homebrew (Зима 2013), ось кроки щодо скидання пароля для MySQL.

Зупиніть поточний запущений екземпляр MySQL

launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

Тепер почніть mysql, пропускаючи таблиці грантів та мережу

$(brew --prefix mysql)/bin/mysqld_safe --skip-grant-tables --skip-networking

Зауважте, що якщо ви запускаєте echo $ (brew - prefix mysql), і він не відповідає як "/ usr / local / opt / mysql" в bash, вам потрібно буде відповідно відкоригувати шлях.

Після цього ви повинні мати запущений незахищений екземпляр MySQL.

Увійдіть і встановіть пароль

mysql -u root

У відповідь на запит введіть наступну команду MySQL, щоб встановити новий пароль для цього користувача.

mysql> update mysql.user set password=PASSWORD('new_password_here') WHERE user='root';

Якщо все пішло по плану, то слід сказати:

Query OK, 1 row affected (0.02 sec)
Rows matched: 4  Changed: 1  Warnings: 0

Вихід із запиту MySQL.

mysql> exit
Bye

Зупинити сервер:

mysqladmin -u root shutdown

Тепер давайте повернемо демон запуску, щоб у нас знову був готовий MySQL:

launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

Вітаю. Ви просто скинули пароль root mysql. Налийте собі каву і отримайте резервне рішення на місці!


5
Щоб зупинити незахищений сервер MySQL після зміни пароля:mysqladmin -u root shutdown
Vebjorn Ljosa

9
Я просто зіткнувся з цією проблемою і знайшов цю відповідь найближчою. Я помітив, що passwordце невірний стовпець у mysql 5.7.9. Натомість мені довелося використовувати authentication_stringзамість цього. Решта інструкцій спрацювали чудово. Дякую!
М. Скотт Форд

5
Як сказав М. Скотт Форд, правильною командою є:update user set authentication_string=password('new_password_here') where user='root';
Панайотис

3
Мені довелося бігти, update mysql.user set authentication_string=password('none') where user='root';щоб це працювало. (Як і коментар прямо вищий за мене, але препенд mysql.до user.)
Steve Мейснер

2
Функція пароля видаляється з часу mysql 8.0.11. Подробиці більш
chancyWu

62

У мене була така ж проблема пару днів тому. Це відбувається під час встановлення mysqlчерез homebrewі запуску сценарію ініціалізації ( mysql_install_db) перед запуском mysqlдемона.

Щоб виправити це, ви можете видалити mysqlці файли, перезапустити службу , а потім запустити сценарій ініціалізації:

launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
rm -r /usr/local/var/mysql/
launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
unset TMPDIR
mysql_install_db --verbose --user=`whoami` --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp

прекрасно працював для мене. Я фактично не хочу встановлювати пароль для своєї локальної машини, тому інші рішення насправді не те, що я шукаю
brad

3
mysql_install_db застарілий, подумайте про використанняmysqld --initialize
Брайан

1
Я просто отримую, No such file or directoryколи запускаю цю першу команду.
агент Зебра

1
після запуску mysqld --initialize команди ви помітите в повідомленні журналу на консолі, що він встановив тимчасовий пароль для користувача root .. скопіюйте його та використовуйте пароль при наступному запуску команди "mysql -uroot -p" - це обов'язково спрацює. . а потім mysql попросить вас скинути пароль .. перевірити це dev.mysql.com/doc/refman/5.7/uk/resetting-permissions.html
Vikrant Labde

@VikrantLabde "Це обов'язково спрацює" - дуже амбітна заява. Я спробував це, використав тимчасовий пароль, який він мені дав, але він все ще не надав доступу. Чи довелося вам уникати будь-якого пунктуації за допомогою зворотного косого риса?
Макс Гудрідж

47

Отримала цю помилку після встановлення mysql через домашнє пиво.

Тому спочатку зніміть установку. Потім перевстановіть через Homebrew

brew update
brew doctor
brew install mysql

Потім перезапустіть службу mysql

 mysql.server restart

Потім запустіть цю команду, щоб встановити новий пароль root.

 mysql_secure_installation

Нарешті він попросить перезавантажити привілеї. Говорять так. Потім знову увійдіть до mysql. І використовуйте новий пароль, який ви встановили.

mysql -u root -p

1
Це ідеальне рішення. Я вже пробував бігати, mysql_secure_installationале ключовою частиною булоmysql.server restart
Йохан

mysql_secure_installation була ключовою п'єсою
Nik

Щоб уникнути головного болю ... просто введіть команду перезапуску, як каже nirojan, а потім запустіть mysql_secure_installation
Дан Зузевич,

13

Якщо ти біжиш

brew install mariadb
...
brew services start mariadb
==> Successfully started `mariadb` (label: homebrew.mxcl.mariadb)

 $(brew --prefix mariadb)/bin/mysqladmin -u root password newpass
/usr/local/opt/mariadb/bin/mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost''

також не входить реєстрація з кореневим обліковим записом:

mariadb -u root
ERROR 1698 (28000): Access denied for user 'root'@'localhost'

тоді користувач адміністратора за замовчуванням створює те саме ім’я, що і ваше ім'я користувача облікового запису MacOS , наприклад johnsmit .

Щоб увійти як root, видайте:

mariadb -u johnsmit
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 17
Server version: 10.4.11-MariaDB Homebrew

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

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

MariaDB [(none)]> exit
Bye

Назва облікового запису MacOS зробила це для мене.
День

чи можу я додати пароль для користувача імені облікового запису macos?
OrigamiEye


4

Я щойно помітив щось спільне для більшості відповідей тут і підтвердило в моїй новій установці. Це насправді очевидно, якщо ви подивитесь на рекомендації для запуску mysqladmin -u rootбез -p.

Немає пароля.

Brew встановлює mysql з просто користувачем root і зовсім не має пароля. Думаю, це має сенс, але Caveats після встановлення зовсім не згадують про це.


2
У мене було відмовлено у доступі, якщо не було пароля root, тому я не думаю, що проблема очевидна.
Джек Мороз

Я не кажу, що питання очевидно; для тих, хто використовував MySQL за звичайних обставин, це зовсім заплутано. Але дивлячись на інші відповіді, причина зрозуміла.
Spyder


3

Оскільки питання було задано / відповіли давно, ці найвищі відповіді для мене не працюють. Ось моє рішення, у 2020 році.

Фон : свіжий mysql / mariadb, встановлений доморощеною.

Проблема : пароль для root не порожній і невідомий.

Виправлення :

  1. mysql -у СВОЮ СИСТЕМУ-USERNAME -p
  2. Пароль порожній (натисніть Enter)
  3. ALTER USER 'root' @ 'localhost' ІДЕНТИФІКОВАНО «NEW-ROOT-PASSWORD»;
  4. ПРИГОТОВЛЕННЯ ПРИМІТКИ;

Причина :

  1. Homebrew створить користувача з правами root, названими поточним ім'ям користувача MacOS.
  2. у нього немає пароля
  3. Оскільки у нього є всі привілеї, просто встановіть пароль користувача з цим користувачем.
  4. Початковий пароль для root був генерований випадковим чином.

2020 правильна відповідь. Я не можу отримати запит на пароль для імені користувача MacOS
OrigamiEye

2
  1. перейдіть до яблучного значка -> системні налаштування
  2. відкрити Mysql
  3. в екземплярах ви побачите "ініціалізувати базу даних"
  4. натисніть на це
  5. вам буде запропоновано встановити пароль для root -> встановити надійний пароль там
  6. використовувати цей пароль для входу в mysql наступного разу

Сподіваюся, це допомагає.


Простий і легкий спосіб. Дякую.
Ezequiel França

1

Запуск цих рядків у терміналі зробив трюк для мене та кількох інших, у кого була така ж проблема. Ці інструкції перераховані в терміналі після того, як пиво успішно встановлює mysql.

mkdir -p ~/Library/LaunchAgents

cp /usr/local/Cellar/mysql/5.5.25a/homebrew.mxcl.mysql.plist ~/Library/LaunchAgents/

launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

/usr/local/Cellar/mysql/5.5.25a/bin/mysqladmin -u root password 'YOURPASSWORD'

де YOURPASSWORDпароль для root.


Я просто отримую, No such file or directoryколи запускаю ці команди
агент Зебра

1

Переконайтеся, що у вас немає ходу .my.cnf, який ховається у своєму homedir. Це була моя проблема.


1

Це працювало для мене для MAC https://flipdazed.github.io/blog/osx%20maintenance/set-up-mysql-osx

Запустіть mysql, запустивши

послуги пивоваріння починають mysql

Запустіть інсталяційний скрипт

mysql_secure_installation

Вам буде запропоновано налаштувати плагін VALIDATE PASSWORD. Для цього введіть y.

Виберіть необхідну перевірку пароля (Не важливо, чи саме ви використовуєте базу даних)

Тепер виберіть y для всіх інших параметрів: Видаліть anon. користувачів; заборонити віддалені кореневі реєстрації; видалити тестову базу даних; перезавантажити таблиці привілеїв. Тепер вам слід отримати повідомлення від

All done!


щоб почати MySQL 5.7 використання stackoverflow.com/questions/51573145 / ...
Adam Winnipass

1

Це працювало для мене. Сподіваємось, це працює і для вас !!! Дотримуйтесь їх.

brew services stop mysql
pkill mysqld
# NB: the following command will REMOVE all your databases!
# Make sure you have backups or SQL dumps if you have important data in them already.
rm -rf /usr/local/var/mysql/
brew services restart mysql

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

mysql -u root 
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password 
BY'YOUR_PASS_WORD!!!!';

2
Ви повинні попередити, що запущена rm -rf /usr/local/var/mysql/команда видалить усі бази та дані Mysql на вашому комп'ютері!
Lashae

0

Пароль за замовчуванням при встановленні mysql через brew - це root, спробуйте це, він працював для мене

mysql -uroot -proot


1
Від brew info mysql: Ми встановили вашу базу даних MySQL без пароля root. Щоб убезпечити його, запустіть: mysql_secure_installation
ssc

@ssc Найкращий спосіб встановити пароль при чистому встановленні.
alexventuraio

0

Термінал 1:

$ mysql_safe

Термінал 2:

$ mysql -u root
mysql> UPDATE mysql.user SET Password=PASSWORD('new-password') WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> quit

Це, можливо, спрацювало в той час, коли відповідь була розміщена, але тим часом зламалася; з (поточною) версією MySQL 5.7.21, вона не вдається із "Невідомим стовпцем" Пароль "у списку полів".
ssc

ОНОВЛЕННЯ mysql.user SET автентифікація_string = PASSWORD ('xxxxxx!') WHERE User = 'root';
kevinc

0

Я використовую Catalina і використовую цю mysql_secure_installationкоманду і тепер працює для мене:

$ mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none): << enter root here >>

я вводя rootяк поточний пароль

OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

а решта зробіть


0

Отже, якщо у когось така ж ситуація та конфігурація, як у мене, і теж збирається зійти з розуму - це працювало для мене .

Після довгої історії у мене була встановлена ​​заварка MariaDB, яка автоматично перезавантажувалась, коли я вбивав її процес (це робилося заварюванням), у якого був кореневий пароль, про який я не знав.

$ brew services list

Це показує щось на кшталт:

mariadb started jdoe /path/to/homebrew.mxcl.mariadb.plist

Зупиніть сервер MySQL за допомогою:

$ brew services stop mariadb

Потім запустіть його знову без користувача root (і не використовуйте варити):

$ mariadbd --skip-grant-tables &

Тут mysql_secure_installationне працював для мене через --skip-grant-tables, і він не працюватиме без того, --skip-grant-tablesщо йому потрібен пароль (якого у мене не було).
Спробував $(brew --prefix mysql)/bin/mysqladmin -u root password hunter2лише повертати дивні помилки і нічого не робив; $(brew --prefix mariadb)/bin/mysqladmin -u root password hunter2також не працював, давав різні помилки та пропозиції, які не працювали для мене.

Але ви можете увійти в mysql зараз без облікових даних:$ mysql

Тут старий метод оновлення користувацької таблиці для root не працює, оскільки "Стовпець" Пароль "не оновлюється".
Новий метод використовує alter userBUT, але працює лише після того, як ви flush privileges;це зробите спочатку.
Потім:
MariaDB [(none)]> alter user 'root'@'localhost' identified by 'hunter2';
( MariaDB [(none)]>тут відображається запит MySQL)
Потім виконайте flush privileges;ще раз.
Вийдіть із клієнта MySQL.

Тепер, що стосується варіння, MariaDB все ще не працює, тому використовуйте $ ps aux | grep -i mariadbдля пошуку під і $ kill -9 <pid>його.
Потім використовуйте, $ brew services start mariadbщоб запустити його знову.


-1

Використовуйте файл init для запуску mysql для зміни кореневого пароля.

brew services stop mysql
pkill mysqld
echo "ALTER USER 'root'@'localhost' IDENTIFIED BY 'newRootPass';" > /tmp/mysql-init
$(brew --prefix mysql)/bin/mysqld --init-file=/tmp/mysql-init

Тепер ваш кореневий пароль змінено. Переконайтесь, що сервер відключений належним чином, щоб зберегти зміну пароля. У новому вікні терміналу виконати

mysqladmin -u root -p shutdown

і введіть новий пропуск.

Запустіть службу та видаліть файл init

brew services start mysql
rm /tmp/mysql-init

Тестовано на mysql версії 8.0.19

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.