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