MySQL8.0 忘记密码&修改密码

mysql 5.7.9以后废弃了password字段和password()函数;authentication_string:字段表示用户密码,而authentication_string字段下只能是mysql加密后的41位字符串密码。所以需要用一下方式来修改root密码:

ALTER user 'root'@'localhost' IDENTIFIED BY 'newpassword';

  

1.登录MySQL

关闭正在运行的 MySQL 服务。打开 cmd 进入 MySQL 的 bin 目录,可直接找到bin目录,在地址栏输入cmd

输入 mysqld --console --skip-grant-tables --shared-memory  命令。–skip-grant-tables 会让 MySQL 服务器跳过验证步骤,允许所有用户以匿名的方式,无需做密码验证就可以直接登录 MySQL 服务器,并且拥有所有的操作权限。

上一个 DOS 窗口不要关闭,打开一个新的 DOS 窗口,此时仅输入 mysql 命令,不需要用户名和密码,即可连接到 MySQL。

2.修改密码

因为mysql 5.7.9以后废弃了password字段和password()函数;authentication_string:字段表示用户密码,而authentication_string字段下只能是mysql加密后的41位字符串密码。所以需要用一下方式来修改root密码:

ALTER user 'root'@'localhost' IDENTIFIED BY 'newpassword';

MySql 从8.0开始修改密码有了变化,在user表加了字段authentication_string,修改密码前先检查authentication_string是否为空,user表在mysql库中,查看表之前先换库,再查表

SELECT host, user, authentication_string from user where user='root';

若authentication_string字段不为空,则修改该字段为空字符串

UPDATE user SET authentication_string='' WHERE user='root';

  然后,

flush privileges; --刷新权限
ALTER user 'root'@'localhost' IDENTIFIED BY 'root';--修改密码为root

  若authentication_string字段为空,则直接刷新权限+修改密码

从今天起,做一个挖坑又填坑的好少年
原文地址:https://www.cnblogs.com/hdu-linux-Soc-AI-IC/p/14544123.html