【JAVA进阶篇教学】第八篇:Java链接MySql数据库异常

本文涉及的产品
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云防火墙,500元 1000GB
简介: 【JAVA进阶篇教学】第八篇:Java链接MySql数据库异常

博主打算从0-1讲解下java进阶篇教学,今天教学第八篇:Java链接MySql数据库异常

本文主要记录下日常项目中java链接mysql异常情况,并且提供解决方案!本文会持续更新,有友友们留言的异常的话,我也会整理提供进去。谢谢大家支持!

ab643c0bbe8041e2a2e5dd4b0fcd0d8a_c93722ef1a144925bbe7d03837719e43.png

一、Communications link failure

具体报错:com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure


Caused by: java.net.ConnectException: Connection timed out: connect

这个问题简单点说就是链接数据库失败,链接超时!

错误原因:

  1. 网络问题: 可能是由于网络不稳定或网络配置问题导致无法建立到数据库服务器的连接。
  2. 数据库服务器未启动: 如果数据库服务器未正确启动或已停止,将无法建立连接。
  3. 防火墙或网络代理问题: 防火墙或网络代理可能阻止了连接尝试,导致连接失败。


解决方案:

  1. 检查网络连接: 你可以在windows中使用cmd中,ping ip地址,如:ping 127.0.0.1,看看是否丢包,如果访问超时或者丢包则代表你访问不了这个ip地址。
  2. 确保数据库服务器运行: 你需要确保下你的windows或者是liunx服务器中mysql服务是否启动。
  3. 检查防火墙和网络代理设置: 如果你能ping通ip地址,但是telnet ip 端口号,例如:telnet 127.0.0.1 3306 不通,这个时候如果开启了防火墙,可能会导致你访问不了3306端口号,另外如果是云liunx服务器,则需要在你的云控制台中安全组或者安全策略中放行3306端口,并且查看下liunx服务器是否开启防火墙,如果没开启则不用管,开启了,则需要添加3306端口白名单。
  4. 检查数据库连接字符串: 确保数据库连接字符串配置正确,包括主机地址、端口号、用户名和密码。可以尝试手动连接数据库以确认连接参数是否正确。


二、Access denied for user

具体报错:java.sql.SQLException: Access denied for user 'root'@'122.235.136.146' (using password: YES)


错误原因:

你访问mysql数据库的账号或者密码错误。


解决方案:

确保数据库连接字符串配置正确,包括主机地址、端口号、用户名和密码。可以尝试手动连接数据库以确认连接参数是否正确。


三、javax.net.ssl.SSLHandshakeException

具体报错:Caused by: javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)


错误原因:

你的链接mysql字符串中,useSSL=true。

解决方案:

将useSSL=true改成useSSL=false 即可。

例如:

jdbc:mysql://127.0.0.1:3306/bbs?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8


四、mysql8

如果你使用的是mysql8,那么驱动需要更新成8.0.x的。

驱动:com.mysql.cj.jdbc.Driver

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.13</version>
        </dependency>

在设定时区的时候,如果设定serverTimezone=UTC,会比中国时间早8个小时,如果在中国,可以选择Asia/Shanghai或者Asia/Hongkong,或者像下面这样配置:

jdbc:mysql://127.0.0.1:3306/bbs?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8


五、待续

如果有友友们想提供异常也是可以评论留言。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2天前
|
NoSQL Java Redis
软件开发常见流程之宝塔初始化安装环境配置,Lam前面不选,直接跳商城,在宝塔内点击软件商城,安Mysql5.7,安java项目管理器,安Ngnix最新版,安Redis
软件开发常见流程之宝塔初始化安装环境配置,Lam前面不选,直接跳商城,在宝塔内点击软件商城,安Mysql5.7,安java项目管理器,安Ngnix最新版,安Redis
java.lang.NullPointerExceptionMybatisPlus出现,测试,java.lang.NullPointe,空指针异常,public方法少写了一个字段,没加注解
java.lang.NullPointerExceptionMybatisPlus出现,测试,java.lang.NullPointe,空指针异常,public方法少写了一个字段,没加注解
|
2天前
|
SQL 关系型数据库 MySQL
java面试之MySQL数据库篇
java面试之MySQL数据库篇
6 0
java面试之MySQL数据库篇
|
3天前
|
Java 网络架构 程序员
解决Java中的NoRouteToHostException异常的方法
解决Java中的NoRouteToHostException异常的方法
|
3天前
|
网络协议 Java 网络安全
Java中如何解决ConnectException异常?
Java中如何解决ConnectException异常?
|
4天前
|
XML Java 关系型数据库
Action:Consider the following: If you want an embedde ,springBoot配置数据库,补全springBoot的xml和mysql配置信息就好了
Action:Consider the following: If you want an embedde ,springBoot配置数据库,补全springBoot的xml和mysql配置信息就好了
|
4天前
|
关系型数据库 MySQL 数据库
关系型数据库mysql数据增量恢复
【7月更文挑战第3天】
13 2
|
4天前
|
关系型数据库 MySQL Shell
关系型数据库mysql数据完全恢复
【7月更文挑战第3天】
12 2
|
4天前
|
存储 关系型数据库 MySQL
|
6天前
|
存储 关系型数据库 MySQL