如何移除 MySQL 的 root 密码

247

我想在本地主机中删除用户root的密码。我该如何操作?由于错误操作,我已经为root用户设置了密码。这就是为什么phpmyadmin会出现以下错误的原因:

#1045 - 用户'root'@'localhost'使用的密码被拒绝访问(没有提供密码)


4
为什么不配置phpMyAdmin使用root密码? - sisve
2
MySQL文档中包含有关如何重置根密码的说明,以防您忘记它。[http://dev.mysql.com/doc/refman/5.5/en/resetting-permissions.html] - Michael Madsen
1
请注意,从MySQL 5.7开始,默认情况下会设置一个随机的root密码,您无法在不先禁用validate_password插件的情况下删除它。请参阅我的文章Removing the MySQL root password或直接查看this gist - BenMorel
对于所有非root用户,SET PASSWORD FOR root@\%`=PASSWORD('');`,百分号必须用反引号括起来。 - FantomX1
想要删除根密码的常见原因是不想一直输入它。另一种实现方式是将密码放在mysql配置文件中。(找到mysql配置文件的文件路径是另一个问题...~/.my.cnf可能有效。)[client]\npassword = root(将\n替换为换行符即可) - David Winiecki
2个回答

454

你需要将root@localhost的密码设置为空。有两种方法:

  1. 使用MySQL SET PASSWORD命令:

    SET PASSWORD FOR root@localhost=PASSWORD(''); -- MySQL 5.x
    SET PASSWORD FOR root@localhost=''; -- MySQL 8.x
    
  2. 使用命令行工具mysqladmin

  3. mysqladmin -u root -pType_in_your_current_password_here password ''
    

6
使用命令“mysqladmin -u root -pcurrent_password password ''”也可以更改MySQL的密码。 - crackity_jones
15
我需要执行 mysqladmin -u root -p password '',然后输入密码。 - crizCraig
2
@crizCraig 可能是因为你的密码不是 CURRENTPASSWORD,密码参数(与其他参数不同)后面没有空格。如果省略密码,则会提示您输入密码(文档)。 - Jason Sperske
3
@mOna 请尝试以下方法:
  1. 关闭 MySQL(停止服务或强制结束);
  2. 创建一个包含 SET PASSWORD FOR root@localhost=PASSWORD(''); 的文件,命名为 restore;
  3. 运行 mysqld_safe --init-file=path/to/restore 命令; 最后登录并用你喜欢的新密码重新修改密码。
- Dario
4
答案中的命令已被弃用,请改用以下命令: SET PASSWORD FOR root@localhost=''; - Prateek Bhuwania
显示剩余9条评论

27

我也遇到过这个问题,

首先,我尝试使用以下命令将我的 root 密码设置为空:

SET PASSWORD FOR root@localhost=PASSWORD('');

但不要高兴,PHPMYADMIN使用 127.0.0.1 而不是 localhost,我知道你会说两者是相同的,但事实并非如此,请使用下面提到的命令,问题就解决了。

SET PASSWORD FOR root@127.0.0.1=PASSWORD('');

只需将 localhost 替换为 127.0.0.1,就完成了。


4
"SET PASSWORD FOR root@localhost=PASSWORD('');" 这个语句对我起了作用。 - workdreamer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接