首页 > 数据库 >成功进入mysql后无法对数据库进行操作【mysql】You must reset your password using ALTER USER statement before executing

成功进入mysql后无法对数据库进行操作【mysql】You must reset your password using ALTER USER statement before executing

时间:2022-11-12 17:35:21浏览次数:43  
标签:mysql 报错 USER statement MySQL password ALTER

安装完mysql 之后,登陆以后,不管运行任何命令,总是提示这个

mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
mysql> use mysql;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
解决方式如下:

MySQL版本5.7.6版本以前用户可以使用如下命令:

mysql> SET PASSWORD = PASSWORD('root');
MySQL版本5.7.6版本开始的用户可以使用如下命令:

mysql> ALTER USER USER() IDENTIFIED BY 'root';
如果不清楚自己是什么版本,可以将两条都尝试一下。

对于出现此种情况,感兴趣的同学可以接着往下看,

原因分析:

MySQL版本5.6.6版本起,添加了password_expired功能,它允许设置用户的过期时间。这个特性已经添加到mysql.user数据表,但是它的默认值是”N”,可以使用ALTER USER语句来修改这个值。

输入以下命令,将账号密码强制到期:

mysql> ALTER USER 'xiaoming'@'localhost' PASSWORD EXPIRE;
此时,用户可以登录到MYSQL服务器,但是在用户为设置新密码之前,不能运行任何命令,就会得到上图的报错,修改密码即可正常运行账户权限内的所有命令。由于此版本密码过期天数无法通过命令来实现,所以DBA可以通过cron定时器任务来设置MySQL用户的密码过期时间。

MySQL 5.7.4版开始,用户的密码过期时间这个特性得以改进,可以通过一个全局变量default_password_lifetime来设置密码过期的策略,此全局变量可以设置一个全局的自动密码过期策略。可以在MySQL的my.cnf配置文件中设置一个默认值,这会使得所有MySQL用户的密码过期时间都为120天,MySQL会从启动时开始计算时间。my.cnf配置如下:

[mysqld]
default_password_lifetime=120
如果要设置密码永不过期,my.cnf配置如下:

[mysqld]
default_password_lifetime=0
如果要为每个具体的用户账户设置单独的特定值,可以使用以下命令完成(注意:此命令会覆盖全局策略),单位是“天”,命令如下:

ALTER USER ‘xiaoming’@‘localhost' PASSWORD EXPIRE INTERVAL 250 DAY;
如果让用户恢复默认策略,命令如下:

ALTER USER 'xiaoming'@'localhost' PASSWORD EXPIRE DEFAULT;
个别使用者为了后期麻烦,会将密码过期功能禁用,命令如下:

ALTER USER 'testuser'@'localhost' PASSWORD EXPIRE NEVER;
————————————————
版权声明:本文为CSDN博主「不忘初_心」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/muziljx/article/details/81541896

标签:mysql,报错,USER,statement,MySQL,password,ALTER
From: https://www.cnblogs.com/chenzhiye1845/p/16884220.html

相关文章

  • linux下安装MySQL8.0
    linux下安装MySQL8.0本次安装演示版本为8.0.281、准备安装目录及其安装包cd/usr/local/mkdirmysqlcdmysql#使用wget下载mysql安装包(如果下载慢,可自行提前准备安......
  • MySQL命令语法
    目录MySQL命令/语法启动MySQL服务退出MySQL服务查看MySQL中有哪些数据库选择需要操作的数据库创建数据库查看当前使用的数据库查看数据库中有哪些表查看表结构查询所有字......
  • MySQL 8.0.30动态redo log初探
    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。GreatSQL是MySQL的国产分支版本,使用上与MySQL一致。本文来源:原创投稿;作者:YeJinrong/叶金荣MySQ......
  • Gin框架执行:go get -u github.com/gin-gonic/gin 报错
    Gin框架执行:goget-ugithub.com/gin-gonic/gin报错错误信息://无法导入gin包:go:modulegithub.com/gin-gonic/gin:Get"https://proxy.golang.org/github.com/gin-......
  • Installing mysql on helm
    一、Installingmysqlonhelm地址https://artifacthub.io/packages/helm/bitnami/mysql (补)  helmrepoaddrepohttps://charts.bitnami.com/bitnami ......
  • 【MySQL8】中文分词支持全文索引
    参考:https://blog.csdn.net/qq_54169998/article/details/122471199第一步:配置文件my.ini(Windows10默认路径:C:\ProgramData\MySQL\MySQLServer8.0)中增加如下配置......
  • MySQL 单行函数
    单行函数:输入一行,输出一行聚合函数(分组函数):输入多行,输出一行  单行函数:输入一行,输出一行聚合函数(分组函数):输入多行,输出一行#1.数值函数#基本的操作......
  • Mysql共享锁和排他锁
    参考:https://blog.csdn.net/diaobatian/article/details/90603887不知道图片能不能正常显示mysql锁机制分为表级锁和行级锁,本文就和大家分享一下我对mysql中行级锁中的共......
  • docker实战教程(十六):mysql主从复制docker版
    新建主服务器容器实例3307dockerrun-p3307:3306--namemysql-master-v/mydata/mysql-master/log:/var/log/mysql-v/mydata/mysql-master/data:/var/lib/mysql-v......
  • mysql 中的 explain 关键字
    在MySQL中使用explain关键字可以模拟查看数据库是如何来执行SQL查询语句,也就是常说的查看一条SQL语句在数据库中的执行计划,如下图所示此图就是执行EXPLAINSELECT*FRO......