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

出于某种原因,当我在我的机器(运行OS X 10.9的Mac)上安装MySQL时,“root”MySQL帐户被搞乱了,我无法访问它,但是我有权访问标准MySQL帐户“sean @本地主机“,我用它来login到phpMyAdmin。

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

mysql> UPDATE mysql.user SET Password=PASSWORD('MyNewPass')

-> WHERE User='root';

mysql> FLUSH PRIVILEGES;

问题是当我尝试运行该MySQLstring时,守护进程ERROR 1142 (42000): UPDATE command denied to user ''@'localhost' for table 'user'ERROR 1142 (42000): UPDATE command denied to user ''@'localhost' for table 'user' ,就好像我没有使用-u参数启动了mysql shell,虽然我做了。

任何帮助是非常赞赏,因为我在这一点上迷失了。 :/

那么,你说你有通过访问:

 sean@localhost 

但是你说你被拒绝访问通过:

 ''@'localhost' 

所以你显然有MySQL用户授权运行。 在这样的情况下,这将无济于事。 所以关键应该是通过阻止MySQL和重新启动(这是我在Ubuntu上做的)来避免用户授予:

 sudo mysqld --skip-grant-tables & 

在Mac上,它可以像没有sudo一样简单:

 mysqld --skip-grant-tables & 

然后当它运行时,以root身份login; 你可以现在做,因为使用授权被跳过:

 mysql -u root mysql 

然后运行一个像这样的查询replace您自己的设置:

 UPDATE user SET Password=PASSWORD('YOURNEWPASSWORD') WHERE user='root'; FLUSH PRIVILEGES; exit;