MySQL密码重设思路MySQL密码保存在user表,修改密码实际上是在修改表中的记录。重置的思路是想办法不用密码进入系统,然后用数据库命令修改user表中的密码记录。查了一下,网上推荐的mysql5系统的方法是用--skip-grant-tables参数启动mysql服务,表示启动时不加载授权表,所以启动成功后,root用户可以使用空密码登录mysqld--skip-grant-tables登录后,可以使用UPDATEuserSETauthentication_string=''WHEREuser='root';这样的命令来设置密码或将密码留空。但是实测命令行mysqld–skip-grant-tables在mysql8中无法成功启动,经测试该参数放在ini文件中,无法启动MySQL8系统密码重置。两种思路两种思路,还是在服务启动时使用--init-file参数加载运行命令文件修改密码。一旦执行该命令,服务启动后密码将被清除或重置。服务启动后,您可以使用空密码或指定密码登录。或者继续研究--skip-grant-tables命令行参数下无法启动服务的原因,解决问题,启动服务后空密码登录,手动输入命令,执行即可清除或重置mysql.user表中的密码记录字段。推荐前者。具体操作过程如下:方法一:使用--init-file参数解决该参数。当指定的服务启动时,首先执行一个包含sql命令的文件。所以,你只需要在这个文件中写上重设密码的命令,并用这个参数指定开机时执行这个命令,启动完成后就可以重设系统密码了。第一步是关闭系统服务netstopmysql第二步是创建一个包含密码修改命令的文本文件ALTERUSER'root'@'localhost'IDENTIFIEDBY'';第三步,通过命令行启动服务器,指定执行上面修改密码的命令文件mysqld--init-file=d:mysqlc.txt--console具体操作截图方法二启动时,想办法使--skip-grant-tables参数同方法一,先关闭系统服务关闭后,mysql8系统下,使用mysqld--console--skip-grant-tables--shared-memory启动没有密码的服务。服务启动后,空密码登录系统mysql.exe-uroot执行sql命令设置root用户密码为空UPDATEmysql.userSETauthentication_string=''WHEREuser='root'andhost='本地主机';具体操作截图MySQL8的一些特性使得老方法reset不是很有效,推荐使用-init-file参数解决,实际测试安全可靠。丢失数据库管理密码是一件很麻烦的事情。如果不能顺利取回,那就很麻烦了。大多数在线搜索解决方案都已过时。建议收藏并关注本文,以备不时之需。
