如何在MySQL5.7中更改“root”密码

3

我在Windows机器上忘记了"MySQL"的"Root"密码。我尝试使用这个链接,但是出现了错误信息(见附图)。有人能帮我解决吗?

enter image description here

步骤如下:

1:在我的电脑服务部分停止了“MySQL进程”。

2:创建了一个包含数据ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';的 .txt文件。

3:将该文件重命名为mysql-init.txt并保存到C驱动器中。

4:打开命令提示符并使用命令C:> cd C:\Program Files\MySQL\MySQL Server 5.7\bin

5:然后使用C:> mysqld --init-file=C:\mysql-init.txt

之后,我在控制台中收到了这个错误信息。


你有需要保留的数据吗? - Manngo
我看到你正在使用 v 5.7。在 5.7.5 和 5.7.6 之间的过程似乎有所不同。你能否概述一下你遵循的步骤(编辑你的问题)? - Manngo
你能检查一下是否真的存在一个名为 C:\Program Files\MySQL\MySQL Server 5.7\data 的目录吗? - Manngo
可能是在MySQL 5.6中重置ROOT密码的重复问题。 - Douglas Hosea
嘿,马克,谢谢你澄清这个问题。我理解一个优秀的 SQL 开发人员或者 SQL 技术专家应该对 SQL 服务器/SQL 数据库和 MySQL 有全面的了解。如果这个问题让你困扰,请忽略它,谢谢。 - little_code
显示剩余4条评论
2个回答

8

在MySQL Community Server 5.7中有一个小技巧,我会分享一些步骤,说明如何重置MySQL 5.7的root密码或设置密码。以下步骤适用于CentOS 7和RHEL7。

  1. 停止你的数据库
service mysqld stop
  1. 修改 /etc/my.cnf 文件,添加 skip-grant-tables 参数
vi /etc/my.cnf
[mysqld] 
skip-grant-tables
  1. 启动MySQL
service mysqld start
  1. 选择MySQL默认数据库
mysql -u root
mysql> use mysql;
  1. 设置新密码
mysql> update user set authentication_string=PASSWORD("yourpassword") where User='root';
  1. 重启MySQL数据库
service mysqld restart
mysql -u root -p

0

针对Linux系统 此过程需要您在服务器上拥有root权限

首先,以root身份登录并停止mysql守护进程。现在让我们启动mysql守护进程并跳过存储密码的授权表。

mysqld_safe --skip-grant-tables

你应该能够成功启动mysqld。如果没有,那么问题可能更大。现在你应该可以无需密码连接到mysql。

mysql --user=root mysql

update user set Password=PASSWORD('new-password') where user='root';
flush privileges;
exit;

现在结束你正在运行的mysqld进程,然后正常重启它。如果有问题,请告诉我。

对于Windows系统

  1. 完全停止您的MySQL服务器。这可以通过Wamp(如果您使用它)完成,或者使用“运行”窗口启动“services.msc”,然后在那里停止服务。

  2. 使用“运行”窗口内的“cmd”打开MS-DOS命令提示符。然后进入您的MySQL bin文件夹,例如C:\ MySQL \ bin。如果使用Wamp,则路径不同。

  3. 在命令提示符中执行以下命令:

    mysqld.exe -u root --skip-grant-tables
    
  4. 将当前的MS-DOS命令提示符保持不变,然后再打开一个新的MS-DOS命令提示符窗口。

  5. 再次转到MySQL bin文件夹。

  6. 输入“mysql”并按Enter键。

  7. 现在您应该拥有正在运行的MySQL命令提示符。键入“use mysql;”,以便我们切换到“mysql”数据库。

  8. 执行以下命令以更新密码:

    UPDATE user SET Password = PASSWORD('your_new_passowrd') WHERE User ='root';
    

    但是,现在您几乎可以运行任何想要的SQL命令。

完成后关闭第一个命令提示符窗口,在第二个命令提示符窗口中键入“exit;”。

现在可以启动MySQL服务了。就是这样。

查看答案以获取更多讨论的解释。


它为什么不起作用,你看了我的编辑吗? - Douglas Hosea
嘿,我没有看到你的编辑。为此感到抱歉。在第二步保存配置文件 my.ini 后,它显示 1:- my-ini 已经存在。您要替换它吗?当我点击“是”时,对话框显示访问被拒绝。 - little_code
我已经更新了我的答案,这样你就不必处理文件,只需使用命令提示符即可。希望我能帮到你。 - Douglas Hosea
嘿,道格拉斯,感谢您的帮助。不幸的是,我的系统只有只读访问权限来更改根密码。所以我按照以下步骤操作。卸载了完整的MySQL包。然后手动删除Program files--> MySQL + Programme data__> MySQL (+), C:\Users\User\AppData\Roaming\MySQl。然后重新安装。现在一切都运行得很好。再次感谢您的帮助。 - little_code
太好了@Jyotiranjan,很高兴它对你有用。 - Douglas Hosea
在MySQL 5.7中,没有密码字段,而是称为authentication_string。 - Ynhockey

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