Пару лет назад я пытался установить apache, php и mysql на свой Mac. У меня все заработало, но в конце концов мне надоело все делать в командной строке, поэтому я переключился на mamp
Теперь я устал от медлительности mamp и хочу научиться лучше использовать командную строку. Я пытаюсь настроить его самостоятельно (ну, с портами Mac), но я забыл пароль для пользователя root mysql. Нет больших проблем, мне там нет данных, я просто переустановлю.
Я удалил mysql, переустановил mysql и запустил:
sudo -u _mysql mysql_install_db5 /opt/local/share/mysql5/mysql/mysql.server start
Все работало нормально, но делаю mysqladmin5 -u root -p ping
спрашивает у меня пароль и mysqladmin5 -u root ping
не работает.
Проблема заключалась в том, что у меня не было пользователя root, чтобы сбросить пароль для исправления do: Shell:
/opt/local/share/mysql5/mysql/mysql.server stop /opt/local/share/mysql5/mysql/mysql.server start --skip-grant-tables
mysql:
user mysql; insert into user (Host, User, Password) values ('localhost','root',''); update user set Select_priv='Y',Insert_priv='Y',Update_priv='Y',Delete_priv='Y',Create_priv='Y',Drop_priv='Y',Reload_priv='Y',Shutdown_priv='Y',Process_priv='Y',File_priv='Y',Grant_priv='Y',References_priv='Y',Index_priv='Y',Alter_priv='Y',Show_db_priv='Y',Super_priv='Y',Create_tmp_table_priv='Y',Lock_tables_priv='Y',Execute_priv='Y',Repl_slave_priv='Y',Repl_client_priv='Y',Create_view_priv='Y',Show_view_priv='Y',Create_routine_priv='Y',Alter_routine_priv='Y',Create_user_priv='Y' where user='root'; exit;
оболочка:
/opt/local/share/mysql5/mysql/mysql.server stop /opt/local/share/mysql5/mysql/mysql.server start mysql -u root
mysql:
grant all privileges on *.* to 'root'@'localhost' with grant option;
Больше информации здесь: http://helpfromfriend.com/database/mysql/how-to-recreate-root-account-in-mysql/
Из dev.mysql.com/doc/refman/5.1/en/default-privileges.html:
Таблица предоставления mysql.user определяет начальные учетные записи пользователей MySQL и их права доступа:
Некоторые учетные записи имеют имя пользователя root. Это учетные записи суперпользователя, которые имеют все права и могут делать что угодно. Первоначальные пароли учетной записи root пусты, поэтому любой может подключиться к серверу MySQL как root без пароля и получить все привилегии.
Инструкцию по сбросу пароля root можно найдено здесь.
Если вы остановите mysqld и запустите его из командной строки с --skip-grant-tables
вариант, вы сможете войти в систему как root без пароля. Затем вы можете установить пароль root на то, что вы запомните.
USE mysql;
UPDATE user SET `password` = PASSWORD('your new password') WHERE user = 'root';
FLUSH PRIVILEGES;
Обязательно остановите mysqld и перезапустите его в обычном режиме после того, как вы это сделаете, чтобы клиенты могли снова проверить свои пароли.
Я не очень хорошо знаю Mac, но у меня была такая же проблема с Windows. Новая установка MySQL с запросом моего текущего пароля root. Ответ на вопрос, как избавиться от этой проблемы, очень прост, по крайней мере, для Windows.
Прежде всего, убедитесь, что вы удалили все папки MySQL на вашем компьютере. В Windows это включает каталог установки, но также в / All Users / Application Data в XP этот каталог находится в C: \ Documents and Settings. Тогда, и на самом деле я никогда не думал об этом простом решении с самого начала, но Windows добавляет все ваши службы в свой реестр. Вы можете избавиться от службы в своем реестре, набрав
sc удалите "ServiceName" в командной строке, в этом случае
sc удалить MySQL
Возможно, то же самое решение каким-то образом применимо к вашему MAC.
Похоже, это больше не работает для более поздних установок MySQL с этой проблемой. См. Комментарий Дэйва 2018 г. http://www.helpfromfriend.com/database/mysql/how-to-recreate-root-account-in-mysql/ сказал: «это не работает на mysql 5.7.17, очень разочаровывает время с этим и многими другими, чтобы пропустить таблицы грантов». Это относится к процедуре, аналогичной показанной здесь.