带有 MariaDB 的 Spring Boot:驱动程序尚未收到来自服务器的任何数据包
Posted
技术标签:
【中文标题】带有 MariaDB 的 Spring Boot:驱动程序尚未收到来自服务器的任何数据包【英文标题】:SpringBoot with MariaDB: The driver has not received any packets from the server 【发布时间】:2020-09-18 17:37:12 【问题描述】:我有一个 MariaDB,在使用 sequel Pro 连接时,我使用此凭据并且可以连接
我使用 SpringBoot
spring.datasource.url=jdbc:mysql://172.105.50.55:3306/pradera_db
spring.datasource.username=pradera_usr
spring.datasource.password=Mddejh847h$#@
但我有这个错误:
Caused by: java.net.ConnectException: Connection refused (Connection refused)
at java.base/java.net.PlainSocketImpl.socketConnect(Native Method)
at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:400)
at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:243)
at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:225)
at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:402)
at java.base/java.net.Socket.connect(Socket.java:591)
at com.mysql.cj.protocol.StandardSocketFactory.connect(StandardSocketFactory.java:155)
at com.mysql.cj.protocol.a.NativeSocketConnection.connect(NativeSocketConnection.java:65)
... 81 common frames omitted
2020-05-31 12:30 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Starting...
2020-05-31 12:30 [restartedMain] ERROR com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Exception during pool initialization.
com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
这是 pom.xml 中的依赖:
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
【问题讨论】:
【参考方案1】:试试这个作为连接字符串:
spring.datasource.url=jdbc:mysql://172.105.50.55:3306/pradera_db?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
pom.xml:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
【讨论】:
你能用这个用户创建/删除表吗? 我刚刚编辑了我的答案,不知道你有没有看到,数据库名不是你的... 在 pom 文件中有正确的依赖关系吗? (移除了H2并添加了mysql?) 移除 H2 依赖。 让我们continue this discussion in chat。【参考方案2】:在运行数据库的机器上,将您的 ip 添加为端口 3306 上的允许连接
Linux:
iptables -I INPUT -p tcp -s your.ip.address.here --dport 3306 -j ACCEPT
窗户: 打开开始菜单,在搜索栏写:Windows防火墙,左侧打开高级设置,选择入站规则,按右侧新规则按钮,选择端口并按next,选择tcp并指定端口3306,按next,允许连接,然后通过选择域、私有、公共并为规则本身选择一个名称来完成。
检查服务是否正在运行并启用/启动它。
Linux:
sudo systemctl status mariadb
sudo systemctl enable mariadb
sudo systemctl start mariadb
Windows:打开开始菜单,搜索 Services.msc,在服务选项卡中找到您的 mariadb 服务并通过右键单击它来修改其状态。
希望对你有帮助。
【讨论】:
以上是关于带有 MariaDB 的 Spring Boot:驱动程序尚未收到来自服务器的任何数据包的主要内容,如果未能解决你的问题,请参考以下文章
如何在 MySQL 和 MariaDB 的 Spring Boot 应用程序中配置多个(两个以上)数据源,
简单使用Spring Boot+JpaRepository+hibernate搭建项目
带有 FeignClient 的 Spring Boot RepositoryRestResource
带有 spring-boot-starter-web 的 Spring Cloud Gateway