Linux部署SpringBoot项目遇到的问题总结

一、启动SpringBoot项目报错

1、连接数据库报错

报错信息如下:

2022-04-20 19:41:36.756 ERROR 27153 --- [Druid-ConnectionPool-Create-816798571] com.alibaba.druid.pool.DruidDataSource   : create connection SQLException, url: jdbc:mysql://localhost:3306/fmmall2?useSSL=true&useUnicode=true&characterEncoding=utf-8, errorCode 0, state 08S01

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

The last packet successfully received from the server was 8 milliseconds ago.  The last packet sent successfully to the server was 8 milliseconds ago.
    at sun.reflect.GeneratedConstructorAccessor62.newInstance(Unknown Source) ~[na:na]
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_144]
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[na:1.8.0_144]
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:425) ~[mysql-connector-java-5.1.47.jar!/:5.1.47]
    at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:990) ~[mysql-connector-java-5.1.47.jar!/:5.1.47]
    at com.mysql.jdbc.ExportControlled.transformSocketToSSLSocket(ExportControlled.java:201) ~[mysql-connector-java-5.1.47.jar!/:5.1.47]
    at com.mysql.jdbc.MysqlIO.negotiateSSLConnection(MysqlIO.java:4914) ~[mysql-connector-java-5.1.47.jar!/:5.1.47]
    at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1663) ~[mysql-connector-java-5.1.47.jar!/:5.1.47]
    at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1224) ~[mysql-connector-java-5.1.47.jar!/:5.1.47]
    at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2199) ~[mysql-connector-java-5.1.47.jar!/:5.1.47]
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2230) ~[mysql-connector-java-5.1.47.jar!/:5.1.47]
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2025) ~[mysql-connector-java-5.1.47.jar!/:5.1.47]
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:778) ~[mysql-connector-java-5.1.47.jar!/:5.1.47]
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47) ~[mysql-connector-java-5.1.47.jar!/:5.1.47]
    at sun.reflect.GeneratedConstructorAccessor55.newInstance(Unknown Source) ~[na:na]
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_144]
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[na:1.8.0_144]
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:425) ~[mysql-connector-java-5.1.47.jar!/:5.1.47]
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:386) ~[mysql-connector-java-5.1.47.jar!/:5.1.47]
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:330) ~[mysql-connector-java-5.1.47.jar!/:5.1.47]
    at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1644) ~[druid-1.1.22.jar!/:1.1.22]
    at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1710) ~[druid-1.1.22.jar!/:1.1.22]
    at com.alibaba.druid.pool.DruidDataSourceCreateConnectionThread.run(DruidDataSource.java:2779) [druid1.1.22.jar!/:1.1.22]Causedby:javax.net.ssl.SSLHandshakeException:java.security.cert.CertificateException:java.security.cert.CertPathValidatorException:Pathdoesnotchainwithanyofthetrustanchorsatsun.security.ssl.Alerts.getSSLException(Alerts.java:192) [na:1.8.0144]atsun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1959) [na:1.8.0144]atsun.security.ssl.Handshaker.fatalSE(Handshaker.java:302) [na:1.8.0144]atsun.security.ssl.Handshaker.fatalSE(Handshaker.java:296) [na:1.8.0144]atsun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1514) [na:1.8.0144]atsun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:216) [na:1.8.0144]atsun.security.ssl.Handshaker.processLoop(Handshaker.java:1026) [na:1.8.0144]atsun.security.ssl.Handshaker.processrecord(Handshaker.java:961) [na:1.8.0144]atsun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1072) [na:1.8.0144]atsun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1385) [na:1.8.0144]atsun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1413) [na:1.8.0144]atsun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1397) [na:1.8.0144]atcom.mysql.jdbc.ExportControlled.transformSocketToSSLSocket(ExportControlled.java:186) [mysqlconnectorjava5.1.47.jar!/:5.1.47]...17commonframesomittedCausedby:java.security.cert.CertificateException:java.security.cert.CertPathValidatorException:Pathdoesnotchainwithanyofthetrustanchorsatcom.mysql.jdbc.ExportControlledX509TrustManagerWrapper.checkServerTrusted(ExportControlled.java:302) ~[mysql-connector-java-5.1.47.jar!/:5.1.47]
    at sun.security.ssl.AbstractTrustManagerWrapper.checkServerTrusted(SSLContextImpl.java:985) ~[na:1.8.0_144]
    at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1496) ~[na:1.8.0_144]
    ... 25 common frames omitted
Caused by: java.security.cert.CertPathValidatorException: Path does not chain with any of the trust anchors
    at sun.security.provider.certpath.PKIXCertPathValidator.validate(PKIXCertPathValidator.java:153) ~[na:1.8.0_144]
    at sun.security.provider.certpath.PKIXCertPathValidator.engineValidate(PKIXCertPathValidator.java:79) ~[na:1.8.0_144]
    at java.security.cert.CertPathValidator.validate(CertPathValidator.java:292) ~[na:1.8.0_144]
    at com.mysql.jdbc.ExportControlled$X509TrustManagerWrapper.checkServerTrusted(ExportControlled.java:295) ~[mysql-connector-java-5.1.47.jar!/:5.1.47]
    ... 27 common frames omitted

报错原因:linux中连接数据库不需要用SSL,直接设置为false即可

2、连接邮箱报错——Spring Boot 发送邮件时,出现 Mail server connection failed 异常问题

解决方法:查看相关资料,发现在腾讯云服务器上,默认禁用了 25 端口,所以通过25端口去连接邮件服务器时,就无法连接会报超时错误。官方建议使用 465 端口,而 456 端口是 SSL 协议的,所以不仅要换端口,还需要进行 SSL 协议替换。如下为application.yml中进行邮件发送配置:

复制代码
spring:
  mail:
    port: 465
    host: smtp.163.com
    username: 18827512193@163.com
    password: NSGOUGXTPJJWPYXB
    default-encoding: utf-8
    protocol: smtp
    properties:
      mail:
        smtp:
          auth: true
          starttls:
           enable: true
           required: true
          ssl:
            enable: true
            socketFactory:
              port: 465
              class: javax.net.ssl.SSLSocketFactory    
复制代码

 

posted @   没有你哪有我  阅读(498)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
历史上的今天:
2021-04-20 LeetCode刷题——两数相加
2021-04-20 LeetCode每日一题——26. 删除有序数组中的重复项(双指针)
2021-04-20 牛客竞赛——a^b
点击右上角即可分享
微信分享提示