MySQL Password Expired

本文分享了在长时间未登录MySQL后,遇到登录提示及权限受限的问题解决过程。通过使用set语句成功修改密码,恢复正常操作,并介绍了使用SET PASSWORD可能带来的log记录风险。

好久没有登录MySQL,登录的时候遇到如下提示:

 

尝试使用命令行登录,发现是可以使用之前的密码登录的,如下:

只是登录之后,发现做不了什么操作。并且使用,alter 语句重设密码也没有成功,如下:

 

试了set 语句,成功修改密码:

此时,在命令行就可以操作了,并且,客户端可以连接成功:

 

 

 

 不过,使用 SET PASSWORD [FOR user] = 'auth_string' 语句,明文密码可能会被记录到log中,具体参考如下:

https://dev.mysql.com/doc/refman/8.0/en/set-password.html

 

 

转载于:https://www.cnblogs.com/luffystory/p/11335024.html

### 如何管理 MySQL 用户密码 #### 设置用户密码过期策略 为了满足 PCI DSS 的合规性要求,即每 90 天强制更改一次密码,可以利用 MySQL 提供的 `PASSWORD EXPIRE` 功能来实现这一目标。自 MySQL 版本 5.6.6 起引入了 `password_expired` 属性,支持管理员定义用户的密码有效期[^2]。 通过执行以下 SQL 命令,可指定某用户的密码在创建后的固定时间段后自动失效: ```sql ALTER USER 'testuser'@'localhost' PASSWORD EXPIRE INTERVAL 90 DAY; ``` 如果希望立即触发某个账户的密码重置流程,则可以直接运行如下语句: ```sql UPDATE mysql.user SET password_expired = 'Y' WHERE User='testuser'; FLUSH PRIVILEGES; ``` 这会标记该用户的密码状态为已到期,下次登录时需重新设定新密码[^4]。 #### 锁定与解锁用户账号 除了控制密码生命周期外,还能够直接禁用特定用户访问权限而无需修改其认证凭证。例如下面这条命令将会阻止 furrywall 用户继续连接到服务器直到被显式解除封锁为止: ```sql ALTER USER 'furrywall'@'localhost' ACCOUNT LOCK; ``` 当需要恢复此用户的正常使用权利时,只需再次发出相对应的操作指令即可开启帐号: ```sql ALTER USER 'furrywall'@'localhost' ACCOUNT UNLOCK; ``` #### 自动化清理闲置进程脚本示例 对于长期处于睡眠模式下的数据库链接占用资源问题,可以通过编写简单的 shell 脚本来定期检测并终止这些不必要的后台线程实例。这里给出一个基于 Linux 平台上的 bash 实现方案作为参考: ```bash #!/bin/bash set -eu MYSQL_IP="192.168.123.19" PORT_NUMBER=3306 ROOT_PASSWORD="your_secure_password" sleeping_ids=$(mysqladmin -h "$MYSQL_IP" -u root -P"$PORT_NUMBER" -p"$ROOT_PASSWORD" processlist | grep Sleep | awk -F '| ' '{print $2}') for pid in ${sleeping_ids[@]} do mysqladmin -h "$MYSQL_IP" -u root -P"$PORT_NUMBER" -p"$ROOT_PASSWORD" kill "${pid}" done ``` 注意替换模板中的变量值为自己环境里的实际配置参数前缀[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值