Пароль root для MacOSX homebrew mysql


116

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

mysql -u root -p

Я получаю такую ​​ошибку:

Доступ запрещен для пользователя 'root' @ 'localhost' (с использованием пароля: NO)

Я переустанавливал MySQL пять раз, но он все еще запрашивает пароль. Как это исправить?


В суперпользователе почти точный вопрос. Выполните следующие действия: superuser.com/a/400345
Icarus,

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

8
Команда mysql_secure_installation запрашивает пароль root; если вы его установили и забыли, эта процедура не поможет.
JohnG

1
Если brew установил MySQL 5.7, выполните следующие действия: stackoverflow.com/a/33924648/133106
mrucci

FWIW mysql -u rootработал здесь ...
rogerdpack

Ответы:


116

Просто запустите эту команду (где NEWPASSваш пароль):

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

У меня была такая же ошибка, и я исправил ее таким образом.


16
Работал у меня. Очевидно (возможно), знак доллара ($) должен вводиться как часть команды (это не просто приглашение оболочки).
hobs

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

5
для 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
предыдущие сообщения не работали для меня, но этот, хотя и деструктивный, работал отлично.
Clay

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

Это сработало для меня без удаления моей существующей базы данных
Мвирабуа Тим

Наконец-то подходящее рабочее решение. @ 2020 MacOs catalina.
Миндаугас Курлис,

Это сработало для меня, когда предыдущее решение не помогло. Спасибо!
Лес Браун,

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
Вебьорн Лйоса, 06

9
Я только что столкнулся с этой проблемой и нашел этот ответ наиболее близким. Я заметил, что passwordэто недопустимый столбец в mysql 5.7.9. Вместо этого мне пришлось использовать authentication_stringвместо этого. Остальные инструкции работали отлично. Спасибо!
M. Scott Ford

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 01

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

отлично работал у меня. На самом деле я не хочу устанавливать пароль для своей локальной машины, поэтому другие решения на самом деле не то, что я ищу,
Брэд

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/en/resetting-permissions.html
Викрант Лабде

@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

Чтобы избежать головной боли ... просто введите команду перезапуска, как говорит Нирожан, затем запустите 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''

также не удается войти в систему с учетной записью root:

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 и без пароля. Думаю, в этом есть смысл, но в предупреждениях после установки об этом вообще не упоминается.


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

Я не говорю, что проблема очевидна; для любого, кто использовал MySQL в обычных условиях, это совершенно сбивает с толку. Но если посмотреть на другие ответы, причина ясна.
Spyder


3

Поскольку вопрос был задан / отвечен давным-давно, эти главные ответы мне не подходят. Вот мое решение в 2020 году.

Предыстория : свежий mysql / mariadb, установленный homebrew.

Проблема : пароль для root не пустой и неизвестный.

Исправление :

  1. mysql -u ВАША-СИСТЕМА-ИМЯ ПОЛЬЗОВАТЕЛЯ -p
  2. Пароль пуст (нажмите ввод)
  3. ALTER USER 'root' @ 'localhost' ИДЕНТИФИЦИРОВАННЫЙ 'NEW-ROOT-PASSWORD';
  4. ПРИВИЛЕГИИ ПРОМЫВКИ;

Причина :

  1. Homebrew создаст пользователя с правами суперпользователя с именем текущего пользователя MacOS.
  2. у него нет пароля
  3. Поскольку у него есть все привилегии, просто сбросьте пароль root с этим пользователем.
  4. Первоначальный пароль для root был сгенерирован случайным образом.

2020 правильный ответ. Я не могу попросить пароль для имени пользователя MacOS
OrigamiEye

2
  1. перейдите к значку яблока -> системные настройки
  2. открыть Mysql
  3. в некоторых случаях вы увидите «инициализировать базу данных»
  4. нажмите на это
  5. вам будет предложено установить пароль для root -> установите там надежный пароль
  6. используйте этот пароль для входа в mysql в следующий раз

Надеюсь это поможет.


Простой и легкий способ. Спасибо.
Эсекьель Франса,

1

Запуск этих строк в терминале помог мне и нескольким другим, у кого была такая же проблема. Эти инструкции отображаются в терминале после того, как brew успешно установит 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. Это была моя проблема.


1

Это сработало для меня для MAC https://flipdazed.github.io/blog/osx%20main maintenance/ set-up- mysql- osx

Запустите mysql, запустив

сервисы brew запускают mysql

Запускаем установочный скрипт

mysql_secure_installation

Вам будет предложено настроить плагин VALIDATE PASSWORD. Для этого введите y.

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

Теперь выберите y для всех остальных опций: Удалить анон. пользователей; запретить удаленный вход в систему root; удалить тестовую базу данных; перезагрузить таблицы привилегий. Теперь вы должны получить сообщение

All done!


для запуска mysql 5.7 используйте stackoverflow.com/questions/51573145/…
Адам Виннипасс

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 04

@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 04

ОБНОВЛЕНИЕ mysql.user SET authentication_string = PASSWORD ('xxxxxx!') ГДЕ User = 'root';
kevinc 08

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 (и без использования brew):

$ 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 userНО работает только после того, как вы это flush privileges;сделаете.
Затем:
MariaDB [(none)]> alter user 'root'@'localhost' identified by 'hunter2';
(здесь MariaDB [(none)]>находится приглашение MySQL)
Затем flush privileges;повторите.
Закройте клиент MySQL.

Что касается brew, MariaDB все еще не запущен, поэтому используйте его $ ps aux | grep -i mariadbдля поиска pid и $ kill -9 <pid>его.
Затем используйте, $ brew services start mariadbчтобы запустить его снова.


-1

Используйте файл инициализации, чтобы запустить mysql, чтобы изменить пароль root.

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

Ваш пароль root теперь изменен. Обязательно завершите работу сервера, чтобы сохранить изменение пароля. В новом окне терминала выполнить

mysqladmin -u root -p shutdown

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

Запустите службу и удалите файл инициализации

brew services start mysql
rm /tmp/mysql-init

Проверено на mysql версии 8.0.19

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