十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
1,用mysql命令行登录mysql的root用户
目前创新互联已为上1000家的企业提供了网站建设、域名、虚拟空间、网站托管、服务器租用、企业网站设计、珠晖网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
2,重新修改root密码 SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');
mysql 5.7增加了两个字段password_last_changed、password_lifetime来完善安全策略。
上面的方法仅仅治标不治本。
可以设置参数default_password_lifetime来延长使用期限
或者
ALTER USER 'root'@localhost' PASSWORD EXPIRE INTERVAL 90 DAYS;
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
ALTER USER 'root'@'localhost' PASSWORD EXPIRE DEFAULT;
我们先来重新认识一下 mysql.user 表中关于密码过期的字段,
password_expired:从 MySQL 5.6.6 版本开始,添加了 password_expired 功能,它允许设置用户的过期时间。
password_last_changed:密码最后一次修改的时间。
password_lifetime:该用户密码的生存时间,默认值为 NULL,除非手动修改此用户密码过期机制,否则都是 NULL。
另外解释一个参数:
default_password_lifetime:从 MySQL 5.7.4 版本开始,此全局变量可以设置一个全局的自动密码过期策略。
1.设置密码永不过期
2.手动设置该用户密码为 30 day(它会自动覆盖密码过期的全局策略)
3.设置密码立马过期
1.设置全局密码过期时间:
2.创建用户:
注:很多人一看这个 password_lifetime 为什么没有变,不应该变成 90 吗,是不是 mysql 的 bug,其实不然。
它的工作方式如下:
有一个全局系统变量 default_password_lifetime,它为使用默认密码生存期的所有帐户指定策略。在系统表中这将存储一个 NULL。NULL 值被用作一个标志,表明所涉及的帐户没有每个用户密码的特殊生存期。通过 ALTER USER password EXPIRE NEVER(将列设置为0)或 ALTER USER password EXPIRE INTERVAL N DAY(将列设置为 N)设置每个用户的特殊密码生存期。
因此,没有设置特定密码生存期的所有用户的所有密码生存期都将跟随全局变量的值。
近安装mySQL5.7.9,发现安装完后会自动生成一个随机密码,然后用sql工具登录,发现这个密码已经过期了,不能登录。
终于解决好了,这里分享下处理步骤:
1.先关闭mysql服务;
2.进入终端,输入指令:cd /usr/local/mysql/bin/,进入安装目录;
3.输入指令:sudo su,切换到root用户;
4.输入指令:./mysqld_safe --skip-grant-tables ,禁止mysql验证功能。此时mysql服务会自动重启了;
5. 用工具(比如Sequal Pro)登录mySQL。配置的时候,只配用户名为root,密码不配。
6. 登录进去以后,数据库选择mysql,修改user表下用户名为root的那条记录,将password_expired设为N。这样随机密码就有效了,可以用密码登录了。
如果希望修改root密码,则在登录mysql后,执行下面两条sql即可:
update mysql.user set authentication_string=password('123456') where user='root' and Host = 'localhost';
flush privileges;
因为mysql的用户密码一般一年就会过期一次。mysql的用户密码一般一年就会过期一次,如果记得这个规律,定期打开mysql表,mysql库----user表---password_last_changed,将此项的当时日期改成当天前两天的日期,每间隔几个月记得进来修改一下,就永远不会遭遇密码过期问题无法登录的bug烦恼。