mysql5.7.4版本及以后的版本。
1、先确认root账户密码是否过期,直接用root用户登录mysql就可以知道密码是否过期,忘记root密码的话也可以用已过期操作进入mysql
2、未过期操作:
(1)在mysql安装目录bin目录下打开cmd,输入:
mysql -u root -p
回车,输入密码进入数据库,
(2)查看所有数据库:
show databases;
进入mysql库:
use mysql;
(3)修改过期用户密码:
update mysql.user set authentication_string=password('123456') where user='sa';
(4)修改用户password_expired为N:
update user set password_expired='N' where user='sa';
(5)修改成功之后刷新权限:
flush privileges;
退出当前数据库登录:
exit;
(6)输入mysql -u sa -p
回车,输入密码是否能登陆成功,如果还是报错1862-your password has expired.,重新用root用户登录数据库,设置全局密码过期:
SET GLOBAL default_password_lifetime = 0;
默认为0,default_password_lifetime值为有效天数,
禁用密码过期:
ALTER USER 'sa'@'localhost' PASSWORD EXPIRE NEVER;
此处需注意sa用户权限,如果为localhost上述命令才能执行成功,如果sa用户为%权限,那么命令需要改成:
ALTER USER 'sa'@'%' PASSWORD EXPIRE NEVER;
刷新权限:
flush privileges;
退出重新用sa用户登录。
3、root账户密码过期或者忘记密码操作
(1)在my.ini配置文件[mysqld] 下添加配置,skip-grant-tables
,意思是在启动mysql时不启动授权表grant-tables,添加配置之后重启mysql服务生效
(2)接下来与未过期操作一致,在cmd中输入mysql -u root
直接进入mysql
(3)修改完成之后把skip-grant-tables
配置删除,重启mysql服务