Spring Boot 应用程序无法连接到本地网络上的 mysql 服务器

时间:2021-02-03 11:52:36

标签: java mysql spring-boot hibernate

由于某种原因,我的应用程序无法连接到本地网络上的 mysql 服务器。问题是我可以使用相同的凭据和相同的 url 从我的数据源浏览器 (Intellij) 连接到它。以前,当我在桌面上运行相同的代码时,一切正常。对我来说唯一改变的是我给自己买了新的笔记本电脑来工作。出于某种原因,当 Spring Boot 加载时,它会在 Hikari Pool 连接上挂起大约 30 秒,然后抛出连接超时异常。

我的网络设置:

  • 运行代码的我的 linux (Mint) 笔记本电脑 (192.168.1.4)
  • 带有 mysql (192.168.1.5) 的 linux (CentOS) 上的旧服务器笔记本电脑

所有IP都是固定的

mysql 信用:

  • 数据库名称(dnd_service)
  • 数据库通行证 (12345678)
  • 用户(dnd-service)
  • 用户通行证 (12345678)

我可以 ping 我的服务器:

PING 192.168.1.5 (192.168.1.5) 56(84) bytes of data.
64 bytes from 192.168.1.5: icmp_seq=1 ttl=64 time=5.32 ms
64 bytes from 192.168.1.5: icmp_seq=2 ttl=64 time=9.01 ms
64 bytes from 192.168.1.5: icmp_seq=3 ttl=64 time=8.31 ms
64 bytes from 192.168.1.5: icmp_seq=4 ttl=64 time=12.3 ms
64 bytes from 192.168.1.5: icmp_seq=5 ttl=64 time=97.3 ms

3306 端口是开放和可访问的(我用 telnet 检查):

telnet 192.168.1.5 3306
Trying 192.168.1.5...
Connected to 192.168.1.5.
Escape character is '^]'.
J
v�vV[wJ!`caching_sha2_password

我可以用intellij连接到mysql: enter image description here

我的 application.properties:

server.port=8090
server.servlet.context-path=/

spring.jpa.database=mysql
spring.jpa.hibernate.ddl-auto=validate
spring.datasource.url=jdbc:mysql://192.168.1.5:3306/dnd_service?serverTimezone=UTC
spring.datasource.username=dnd-service
spring.datasource.password=12345678

spring.jackson.serialization.fail-on-empty-beans=false
spring.jackson.default-property-inclusion=NON_NULL

当我尝试运行我的应用程序时,我得到以下输出:

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.3.2.RELEASE)

2021-02-03 14:26:34,815 INFO  [main] org.springframework.boot.StartupInfoLogger: Starting Application.Companion on cvazer-laptop with PID 24924 (/home/cvazer/Programming/remote/dnd-service/build/classes/kotlin/main started by cvazer in /home/cvazer/Programming/remote/dnd-service)
2021-02-03 14:26:34,820 INFO  [main] org.springframework.boot.SpringApplication: No active profile set, falling back to default profiles: default
2021-02-03 14:26:35,960 INFO  [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate: Bootstrapping Spring Data JPA repositories in DEFERRED mode.
2021-02-03 14:26:36,243 INFO  [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate: Finished Spring Data repository scanning in 269ms. Found 44 JPA repository interfaces.
2021-02-03 14:26:37,007 INFO  [main] org.springframework.boot.web.embedded.tomcat.TomcatWebServer: Tomcat initialized with port(s): 8080 (http)
2021-02-03 14:26:37,021 INFO  [main] org.apache.juli.logging.DirectJDKLog: Initializing ProtocolHandler ["http-nio-8080"]
2021-02-03 14:26:37,022 INFO  [main] org.apache.juli.logging.DirectJDKLog: Starting service [Tomcat]
2021-02-03 14:26:37,023 INFO  [main] org.apache.juli.logging.DirectJDKLog: Starting Servlet engine: [Apache Tomcat/9.0.37]
2021-02-03 14:26:37,115 INFO  [main] org.apache.juli.logging.DirectJDKLog: Initializing Spring embedded WebApplicationContext
2021-02-03 14:26:37,115 INFO  [main] org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext: Root WebApplicationContext: initialization completed in 2022 ms
2021-02-03 14:26:37,374 INFO  [main] org.springframework.scheduling.concurrent.ExecutorConfigurationSupport: Initializing ExecutorService 'applicationTaskExecutor'
2021-02-03 14:26:37,442 INFO  [task-1] org.hibernate.jpa.internal.util.LogHelper: HHH000204: Processing PersistenceUnitInfo [name: default]
2021-02-03 14:26:37,515 INFO  [task-1] org.hibernate.Version: HHH000412: Hibernate ORM core version 5.4.18.Final
2021-02-03 14:26:37,742 INFO  [task-1] org.hibernate.annotations.common.reflection.java.JavaReflectionManager: HCANN000001: Hibernate Commons Annotations {5.1.0.Final}
2021-02-03 14:26:37,897 INFO  [task-1] com.zaxxer.hikari.HikariDataSource: HikariPool-1 - Starting...
2021-02-03 14:27:09,048 ERROR [task-1] 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.
    at com.mysql.cj.jdbc.exceptions.SQLError.createCommunicationsException(SQLError.java:174)
    at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:64)
    at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:833)
    at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:453)
    at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:246)
    at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:198)
    at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138)
    at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:358)
    at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:206)
    at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:477)
    at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:560)
    at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:115)
    at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112)
    at org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection(DatasourceConnectionProviderImpl.java:122)
    at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess.obtainConnection(JdbcEnvironmentInitiator.java:180)
    at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:68)
    at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:35)
    at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:101)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:263)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:237)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:214)
    at org.hibernate.id.factory.internal.DefaultIdentifierGeneratorFactory.injectServices(DefaultIdentifierGeneratorFactory.java:152)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.injectDependencies(AbstractServiceRegistryImpl.java:286)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:243)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:214)
    at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.<init>(InFlightMetadataCollectorImpl.java:176)
    at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:118)
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:1224)
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1255)
    at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:58)
    at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:365)
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:391)
    at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266)
    at java.util.concurrent.FutureTask.run(FutureTask.java)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
Caused by: com.mysql.cj.exceptions.CJCommunicationsException: 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.
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:61)
    at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:105)
    at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:151)
    at com.mysql.cj.exceptions.ExceptionFactory.createCommunicationsException(ExceptionFactory.java:167)
    at com.mysql.cj.protocol.a.NativeSocketConnection.connect(NativeSocketConnection.java:89)
    at com.mysql.cj.NativeSession.connect(NativeSession.java:144)
    at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:953)
    at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:823)
    ... 34 common frames omitted
Caused by: java.net.SocketTimeoutException: connect timed out
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:607)
    at com.mysql.cj.protocol.StandardSocketFactory.connect(StandardSocketFactory.java:155)
    at com.mysql.cj.protocol.a.NativeSocketConnection.connect(NativeSocketConnection.java:63)
    ... 37 common frames omitted
Disconnected from the target VM, address: '127.0.0.1:60251', transport: 'socket'

Process finished with exit code 1

最后一个例外是

Caused by: java.net.SocketTimeoutException: connect timed out
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:607)
    at com.mysql.cj.protocol.StandardSocketFactory.connect(StandardSocketFactory.java:155)
    at com.mysql.cj.protocol.a.NativeSocketConnection.connect(NativeSocketConnection.java:63)
    ... 36 common frames omitted

据我所知,一切都应该有效,但由于某种原因它不起作用,我不知道为什么

以防万一我的构建脚本:

plugins {
    id 'java'
    id 'org.jetbrains.kotlin.jvm' version '1.3.72'
    id 'org.jetbrains.kotlin.plugin.spring' version '1.3.72'
    id 'org.jetbrains.kotlin.plugin.jpa' version '1.3.72'
    id 'org.jetbrains.kotlin.plugin.allopen' version '1.3.72'
    id 'org.jetbrains.kotlin.kapt' version '1.3.72'
    id 'org.springframework.boot' version '2.3.2.RELEASE'
    id 'io.spring.dependency-management' version '1.0.8.RELEASE'
}

apply plugin: 'io.spring.dependency-management'

group 'com.gitlab.cvazer'
version '1.0.0'

repositories {
    mavenCentral()
}

allOpen {
    annotation('javax.persistence.Entity')
    annotation('javax.persistence.Embeddable')
    annotation('javax.persistence.MappedSuperclass')
}

dependencies {
    implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8'
    implementation 'org.jetbrains.kotlin:kotlin-reflect'
    implementation 'com.fasterxml.jackson.module:jackson-module-kotlin'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-configuration-processor'
    implementation 'org.springframework.boot:spring-boot-starter-amqp'
    implementation 'org.slf4j:slf4j-api:1.7.30'
    implementation 'ch.qos.logback:logback-classic:1.2.3'
    implementation 'ch.qos.logback:logback-core:1.2.3'
    implementation 'com.fasterxml.jackson.core:jackson-core:2.11.0'
    implementation 'com.fasterxml.jackson.core:jackson-annotations:2.11.0'
    implementation 'com.fasterxml.jackson.core:jackson-databind:2.11.0'
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'mysql:mysql-connector-java:8.0.23'
    implementation 'com.fasterxml.jackson.module:jackson-module-paranamer:2.2.3'
    implementation 'com.javaetmoi.core:javaetmoi-hibernate5-hydrate:5.2.2'
    implementation 'org.codehaus.groovy:groovy-jsr223:3.0.5'
    implementation 'org.codehaus.groovy:groovy-json:3.0.5'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}


test {
    useJUnitPlatform()
}

compileKotlin {
    kotlinOptions.jvmTarget = '1.8'
    kotlinOptions.freeCompilerArgs = ['-Xjsr305=strict']
}

kapt {
    correctErrorTypes = true
}

1 个答案:

答案 0 :(得分:0)

你能把你的 spring.datasource.url 替换成 jdbc:mysql://localhost:3306/dnd_service?user=dnd-service&12345678&useUnicode=true&characterEncoding=UTF-8

相关问题