Answers:
阅读并执行《 MySQL参考手册》中有关重置根密码的章节。
此过程将在未经授权的情况下启动mysql守护程序,使您无需提供凭据即可进行连接。在此模式下,您可以正常连接,并重置密码和授权。之后,不要忘记使用适当的权限再次启动mysql。
如果这是一个Debian / Ubuntu框,则有一个名为debian-sys-maint的特殊的等效于root的帐户。您可以在/etc/mysql/debian.cnf中读取密码
使用该密码,您可以使用以下命令以debian-sys-maint的身份登录mysql:
mysql --defaults-file=/etc/mysql/debian.cnf mysql
登录后,请执行以下操作:
update user set password=password('<new password>') where user='root';
flush privileges;
quit;
现在应该可以使用您的新密码访问root了:
mysql -uroot -p
我的root用户不存在。上
CREATE USER root@localhost;
我有
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
(而且这个可以而且应该更加自动化)
注意:在INSERT
PITA中找到正确的“ Y”数。
由于《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