По какой-то причине, когда я установил MySQL на свой компьютер (Mac с OS X 10.9), учетная запись MySQL «root» испортилась, и у меня нет к ней доступа, но у меня есть доступ к стандартной учетной записи MySQL «sean @». localhost ', который я использую для входа в phpMyAdmin.
Я пытаюсь сбросить пароль root, запустив демон mysqld с помощью команды mysqld --skip-grant-tables
а затем запустите следующие строки в оболочке mysql>.
mysql> UPDATE mysql.user SET Password=PASSWORD('MyNewPass')
-> WHERE User='root';
mysql> FLUSH PRIVILEGES;
Проблема в том, что когда я пытаюсь запустить эту строку MySQL, демон возвращает ERROR 1142 (42000): UPDATE command denied to user ''@'localhost' for table 'user'
как если бы я не использовал аргумент -u при запуске оболочки mysql, хотя я это сделал.
Любая помощь очень ценится, так как я потерялся в этот момент. : /
Ну, вы говорите, что у вас есть доступ через:
sean@localhost
Но затем вы говорите, что вам отказано в доступе через:
''@'localhost'
Итак, у вас явно работает MySQL с пользовательскими грантами. Что не поможет в таком случае. Таким образом, ключ должен слишком обходить пользовательские гранты, останавливая MySQL и повторный запуск через (это то, что я делаю в Ubuntu):
sudo mysqld --skip-grant-tables &
На Mac это может быть так же просто, как обойтись без sudo
:
mysqld --skip-grant-tables &
Затем, когда он запущен, войдите в систему как root; вы можете сделать это сейчас, так как гранты на использование пропущены:
mysql -u root mysql
Затем запустите такой запрос, заменив его собственными настройками:
UPDATE user SET Password=PASSWORD('YOURNEWPASSWORD') WHERE user='root'; FLUSH PRIVILEGES; exit;