mysql server 8.0 以上修改重置密码(亲测有效方案)
[mysqld]
character-set-server=utf8
#忘记密码时使用 #skip-grant-tables #设置协议认证方式(重点啊)
default_authentication_plugin=mysql_native_password
具体操作流程如下:
方法一:利用--init-file参数解决 该参数指定服务启动时先执行一个包含sql命令文件,
因此,只需要将重置密码的命令写在该文件中,以此参数指定启动时执行该命令,启动完成即可重置系统密码了。
第一步,关掉系统服务 net stop mysql
第二步,创建一个文本文件,内含一条密码修改命令 ALTER USER 'root'@'localhost' IDENTIFIED BY '';
第三步:命令行方式启动服务器,指定启动时执行上述的密码修改命令文件 mysqld --init-file=reset.sql --console
-------------------------------------------------------------------------------------------------------------------------
方法二,想办法让--skip-grant-tables参数用起来
同方法一,先关掉系统服务 实测,在mysql8系统下,用mysqld --console --skip-grant-tables --shared-memory可以无密码启动服务
服务启动后,以空密码登入系统 mysql.exe -u root
然后执行sql命令将root用户密码设置为空
UPDATE mysql.user SET authentication_string='' WHERE user='root' and host='localhost';
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY'1234567'; -- ‘位置’ % 表示可以远程
CREATE USER 'super'@'%'IDENTIFIED WITH mysql_native_password BY '1234567';
SHOW VARIABLES LIKE 'validate_password%'; set global validate_password.policy = LOW;
# 查看一下user表 select host, user, authentication_string, plugin from user; -- plugin: 密码加密方式;