mysql5.7登录后报错
登陆MYSQL以后,不管运行任何命令,总是提示这个
mysql> create database a; ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
mysql> show databases
-> ;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
解决办法
解决方式如下: (1)MySQL版本5.7.6版本(以前)用户可以使用如下命令: mysql> SET PASSWORD = PASSWORD('123456'); (2)MySQL版本5.7.6版本(开始后)的用户可以使用如下命令: mysql> ALTER USER USER() IDENTIFIED BY '123456';
原因分析
1)MySQL版本5.6.6版本起,添加了password_expired功能,它允许设置用户的过期时间。这个特性已经添加到mysql.user数据表,但是它的默认值是”N”,可以使用ALTER USER语句来修改这个值。 输入以下命令,将账号密码强制到期: mysql> ALTER USER 'root'@'localhost' PASSWORD EXPIRE; 此时,用户可以登录到MYSQL服务器,但是在用户为设置新密码之前,不能运行任何命令,就会得到上图的报错,修改密码即可正常运行账户权限内的所有命令。由于此版本密码过期天数无法通过命令来实现,所以DBA可以通过cron定时器任务来设置MySQL用户的密码过期时间。 (2)MySQL 5.7.4版开始,用户的密码过期时间这个特性得以改进,可以通过一个全局变量default_password_lifetime来设置密码过期的策略,此全局变量可以设置一个全局的自动密码过期策略。可以在MySQL的my.cnf配置文件中设置一个默认值。 (a)这会使得所有MySQL用户的密码过期时间都为120天,MySQL会从启动时开始计算时间。 my.cnf配置如下: [mysqld] default_password_lifetime=120 (b)如果要设置密码永不过期,my.cnf配置如下: my.cnf配置如下: [mysqld] default_password_lifetime=0 (3)如果要为每个具体的用户账户设置单独的特定值,可以使用以下命令完成(注意:此命令会覆盖全局策略),单位是“天”,命令如下: ALTER USER ‘root’@‘localhost' PASSWORD EXPIRE INTERVAL 250 DAY; (4)如果让用户恢复默认策略,命令如下: ALTER USER 'root'@'localhost' PASSWORD EXPIRE DEFAULT; (5)个别使用者为了后期麻烦,会将密码过期功能禁用,命令如下: ALTER USER 'testuser'@'localhost' PASSWORD EXPIRE NEVER;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?