MySQL:“UPDATE 命令被拒绝给用户''@'localhost'”

MySQL:“UPDATE 命令被拒绝给用户''@'localhost'”

由于某种原因,当我在我的计算机(运行 OS X 10.9 的 Mac)上安装 MySQL 时,“root”MySQL 帐户变得混乱,我无法访问它,但我可以访问标准 MySQL 帐户“sean@localhost”,我使用它登录 phpMyAdmin。

我正在尝试通过使用命令启动 mysqld 守护程序mysqld --skip-grant-tables,然后在 mysql> shell 中运行以下几行来重置“root”密码。

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' 就好像我在启动 mysql shell 时没有使用 -u 参数一样,尽管我确实使用了。

我现在很迷茫,所以非常感谢任何帮助。:/

答案1

嗯,你说你可以通过以下方式访问:

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;

相关内容