ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
解决方案是
mysqld_safe --skip-grant-tables &
mysql
INSERT INTO user (Host,User,Password) VALUES ('localhost', 'root', 'changethispassword');
UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';
FLUSH PRIVILEGES;
之后,我在此帮助下一一添加了所有权限:
mysql mysql -e "SELECT * FROM user WHERE User='root'\G"|grep N
阅读并执行MySQL 参考手册中有关重置 root 密码的章节。
此过程在未经授权的情况下启动 mysql 守护程序,允许您在不提供凭据的情况下进行连接。在此模式下,您可以正常连接,并重置密码和授权。之后不要忘记在适当的授权下再次启动 mysql。
如果这是 Debian/Ubuntu 机器,则有一个特殊的 root 等效帐户,称为debian-sys-maint。您可以在/etc/mysql/debian.cnf中读取密码
使用该密码,您可以使用以下命令以 debian-sys-maint 身份登录 mysql:
登录后,请执行以下操作:
现在应该可以使用您的新密码访问 root:
我的根用户不存在。上
我有
解决方案是
之后,我在此帮助下一一添加了所有权限:
(这个可以而且应该更加自动化)
注意:在 中找到正确数量的“Y”
INSERT
是 PITA。由于MySQL 参考手册上的步骤不是很清楚,我试图用更简单的语言在这里回答。(这个答案与 MacBook OSX 用户有关):
my.cnf
. (对我来说,它被放置在 @/Applications/XAMPP/xamppfiles/etc
。如果找不到,您可以搜索)。my.cnf
在任何文本编辑器中 打开文件。"skip-grant-tables"
在部分末尾添加(不带引号)[mysqld]
并保存文件。skip-grant-tables
选项开始。Terminal
并运行mysql
命令mysql> UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> exit