Відповіді:
Прочитайте та виконайте главу про скидання пароля root у Довідковому посібнику MySQL.
Ця процедура запускає демон mysql без дозволу, що дозволяє вам підключитися, не надаючи облікові дані. У цьому режимі ви можете підключитися нормально та скинути паролі та гранти. Після цього не забудьте знову запустити mysql з відповідною авторизацією на місці.
Якщо це поле Debian / Ubuntu, існує спеціальний кореневий еквівалентний обліковий запис, який називається debian-sys-maint . Ви можете прочитати пароль у /etc/mysql/debian.cnf
Використовуючи цей пароль, ви можете увійти в mysql як debian-sys-maint, використовуючи:
mysql --defaults-file=/etc/mysql/debian.cnf mysql
Після входу в систему зробіть наступне:
update user set password=password('<new password>') where user='root';
flush privileges;
quit;
root тепер повинен бути доступний за допомогою вашого нового пароля:
mysql -uroot -p
Мій користувач root не існував. На
CREATE USER root@localhost;
я отримав
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
Рішення полягало в тому, щоб
mysqld_safe --skip-grant-tables &
mysql
INSERT INTO user (Host,User,Password) VALUES ('localhost', 'root', 'changethispassword');
UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';
FLUSH PRIVILEGES;
Після цього я додав всі приватні особи один за одним за допомогою невеликої допомоги з цього:
mysql mysql -e "SELECT * FROM user WHERE User='root'\G"|grep N
(і це можна і потрібно більше автоматизувати)
Примітка: знаходження правильної кількості значень "Y у" INSERT
- це PITA.
Оскільки кроки в довідковому посібнику MySQL не дуже зрозумілі, я намагаюся відповісти тут легшою мовою. (ця відповідь стосується користувачів MacBook OSX):
my.cnf
. (Для мене це було розміщено @ /Applications/XAMPP/xamppfiles/etc
. Ви можете просто шукати, якщо ви не можете його знайти).my.cnf
файл у будь-якому текстовому редакторі. "skip-grant-tables"
(без лапок) в кінці [mysqld]
розділу та збережіть файл. skip-grant-tables
опції. Terminal
та запустіть mysql
команду mysql> UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> exit