bug宝典JAVA篇 Your password has expired

本文记录了在部署应用到Linux服务器过程中遇到的MySQL密码过期错误,并详细展示了错误信息及解决方案,包括检查配置文件、更新用户密码等步骤。

我将应用部署到linux服务器上,提示这样的错误。说是密码过期?怎么可能。

20:09:45.130 ERROR com.alibaba.druid.pool.DruidDataSource - init datasource error, url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8
java.sql.SQLException: Your password has expired. To log in you must change it using a client that supports expired passwords.
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:964) ~[mysql-connector-java-5.1.40.jar:5.1.40]
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3970) ~[mysql-connector-java-5.1.40.jar:5.1.40]
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3906) ~[mysql-connector-java-5.1.40.jar:5.1.40]
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:873) ~[mysql-connector-java-5.1.40.jar:5.1.40]

查看jdbc.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8
jdbc.username=root
jdbc.password=cRsnF9Fcc+OoMrQony3QCMijaDW5+j6ZMlzPsIxRzzJJGqM6fuIXHGHvGqxGco3zUrqk2TjszYyeEdHIN14g==

#druid connection pool settings
druid.initialSize=10
druid.minIdle=10
druid.maxActive=50
druid.maxWait=60000
druid.timeBetweenEvictionRunsMillis=60000
druid.minEvictableIdleTimeMillis=300000
druid.validationQuery=SELECT 'x'
druid.testWhileIdle=true
druid.testOnBorrow=false
druid.testOnReturn=false
druid.poolPreparedStatements=true
druid.maxPoolPreparedStatementPerConnectionSize=20
druid.filters=config
druid.connectionProperties=config.decrypt=true;config.decrypt.key=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAImNJeNfVoFD8A79O76kye03OLxY13rKxeIZQXmF9pd80CW9rCmGVpGmGGYIQ3AAxob9lPbCwKbTZ6y5PX4lsCAwEAAQ==

原来我使用的是root用户,于是新建一个新的用户,替换该用户的账号、密码就可以了

### 解决 VSCode 连接 MySQL 数据库时密码过期的问题 当遇到 `Your password has expired` 错误提示时,意味着当前使用的 MySQL 用户账户的密码已经超过了有效期。为了恢复正常的数据库连接功能,需要按照以下方式重置并更新密码。 #### 修改 MySQL 密码策略 对于 MySQL 版本 5.7 及以上,默认启用了密码过期机制来增强安全性。如果希望永久禁用此特性,则可以通过修改配置文件实现: 1. 找到并编辑 my.cnf 或者 my.ini 文件(取决于操作系统),通常位于 `/etc/mysql/`, `/usr/local/mysql/support-files/` 或 Windows 下安装目录内。 2. 添加如下参数至 `[mysqld]` 部分之下: ```ini default_password_lifetime=0 ``` 3. 保存更改后的配置文档,并重启 MySQL 服务使新的设定生效。 #### 使用命令行工具重设密码 另一种更为直接的方法是在拥有管理员权限的情况下通过命令行界面完成操作: 1. 打开终端窗口或 CMD 提示符; 2. 切换路径到 MySQL 安装位置下的 bin 子文件夹中; ```bash cd C:\Program Files\MySQL\MySQL Server X.X\bin\ ``` 3. 登录 MySQL 控制台,输入现有有效凭证登录: ```sql mysql -u root -p ``` 4. 成功登陆后执行 SQL 命令设置新密码以及取消密码期限限制: ```sql SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_secure_password'); ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER; FLUSH PRIVILEGES; EXIT; ``` 上述过程中的 `'new_secure_password'` 应替换为实际想要设立的新密码字符串[^1][^2]。 #### 测试连接有效性 完成上述步骤之后,建议立即尝试重新建立与 MySQL 数据库之间的连接以验证问题是否得到彻底解决。可以借助像 DataGrip、HeidiSQL 或者 Visual Studio Code 自带插件这样的图形化管理软件来进行测试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

warrah

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值