Назад | Перейти на главную страницу

MySQL: «Команда UPDATE запрещена пользователю '' @ 'localhost'»

По какой-то причине, когда я установил 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;