MySQL数据库之Jdbc连接MySQL 8时报错
小标 2018-08-17 来源 : 阅读 1176 评论 0

摘要:本文主要向大家介绍了MySQL数据库之Jdbc连接MySQL 8时报错“MySQLNonTransientConnectionException: Public Key Retrieval is not allowed” ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助。

本文主要向大家介绍了MySQL数据库之Jdbc连接MySQL 8时报错“MySQLNonTransientConnectionException: Public Key Retrieval is not allowed” ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助。

一、问题
因停电检修,今天重启服务器后,再启动jboss就报错“MySQLNonTransientConnectionException: Public Key Retrieval is not allowed”,jboss无法获取对数据源的JDBC连接。
二、解决过程
百度一下,先说是旧版JDBC驱动的bug,于是从maven中央库下载最新的mysql-connector-8.0.11.jar,替换后修改jboss的modle说明、将配置文件中的driver-class改为‘com.mysql.cj.jdbc.Driver‘,但错误依旧。
继续百度,说是需修改default_authentication_plugin设置,于是修改my.ini,增加[mysqld] default_authentication_plugin=mysql_native_password,重启mysql 8,错误依旧。
继续百度,说是仍需修改用户的密码加密方式,于是在mysql命令行执行:ALTER USER ‘myuser‘@‘localhost‘ IDENTIFIED WITH mysql_native_password BY ‘mypassword‘;,这次虽仍报错,但错误提示变成“InvalidConnectionAttributeException: The server time zone value ‘<乱码>‘ is unrecognized or represents more than one time zone. ……”。
继续百度,说是在jdbc连接串需指定time zone,于是修改jboss配置文件中的connection-url,在最后增加serverTimezone=Asia/Shanghai,重启jboss,终于过关。
三、总结

更换mysql的jdbc驱动,但其实从 5.1.37已经更新过这个bug,不一定非要用8.0.11;
修改my.ini(Linux则是my.cnf),增加[mysqld] default_authentication_plugin=mysql_native_password;
在mysql命令行执行:ALTER USER ‘myuser‘@‘localhost‘ IDENTIFIED WITH mysql_native_password BY ‘mypassword‘;
在jdbc连接串指定time zone。

四、疑问
问题虽然解决了,但仍存在几个疑问:

为什么停电重启前一切正常?
为避免SSL,配置文件中的connection-url中加了useSSL=false,难道与这有关系?

本文由职坐标整理并发布,希望对同学们学习MySQL有所帮助,更多内容请关注职坐标数据库MySQL数据库频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程