出于某种原因,当我在我的机器(运行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;