jjzjj

You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true

宝儿的程序生涯 2024-03-22 原文

遇到一个问题

关键点:
You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.

翻译一下:
CST 2022 WARN:不建议在没有服务器身份验证的情况下建立SSL连接。 根据MySQL 5.5.45+、5.6.26+和5.7.6+的要求,如果没有设置显式选项,默认必须建立SSL连接。 为了符合不使用SSL的现有应用程序,verifyServerCertificate属性被设置为’false’。 您需要通过设置useSSL=false显式禁用SSL,或者设置useSSL=true并为服务器证书验证提供信任存储区。

解决:
找到数据库和项目连接的配置文件
application-prod.properties

spring.datasource.url=jdbc:mysql://localhost:3306/life_vest?useUnicode=true&characterEncoding=UTF8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&useSSL=false

//原来:
//spring.datasource.url=jdbc:mysql://127.0.0.1:3306/life_vest?useUnicode=true&characterEncoding=utf-8

试错:
直接添加&useSSL=false,没有效果

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/life_vest?useUnicode=true&characterEncoding=utf-8&useSSL=false
或者
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/life_vest?useSSL=false&useUnicode=true&characterEncoding=utf-8

查到的资料

第一种处理办法

jdbcUrl=jdbc:mysql://localhost:3306/zht?useUnicode=true&characterEncoding=utf-8&useSSL=false

1.先将mysql-connector-java的版本改到5.5.45之下
2.再将jdbcUrl改成如下

jdbcUrl=jdbc:mysql://localhost:3306/zht?useUnicode=true&characterEncoding=utf-8

第二种处理办法

如果你觉得更喜欢5.5.45以后的版本,那么需要将jdbc.properties里jdbcUrl换成新的:

jdbc:mysql://localhost:3306/zht?useUnicode=true&characterEncoding=UTF8&autoReconnect=true&zeroDateTimeBehavior=convertToNull

参数名称 | 参数说明
user | 数据库用户名(用于连接数据库)
password | 用户密码(用于连接数据库)
useUnicode | 是否使用Unicode字符集,如果参数characterEncoding | 设置为gb2312或gbk,本参数值必须设置为true
characterEncoding | 当useUnicode设置为true时,指定字符编码。比如可设置为gb2312或gbk
autoReconnect | 当数据库连接异常中断时,是否自动重新连接?
autoReconnectForPools | 是否使用针对数据库连接池的重连策略
failOverReadOnly | 自动重连成功后,连接是否设置为只读?
maxReconnects | autoReconnect设置为true时,重试连接的次数
initialTimeout | autoReconnect设置为true时,两次重连之间的时间间隔,单位:秒
connectTimeout | 和数据库服务器建立socket连接时的超时,单位:毫秒。 0表示永不超时,适用于JDK 1.4及更高版本
socketTimeout | socket操作(读写)超时,单位:毫秒。 0表示永不超时

附录:

完整application-prod.properties
阿里云 配置springboot与mysql数据库

spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/life_vest?useUnicode=true&characterEncoding=UTF8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&useSSL=false
//数据库名称
spring.datasource.username=root
//数据库密码
spring.datasource.password=
//指定启动连接池时,初始建立的连接数量
spring.datasource.initialSize=5  
//指定必须保持连接的最小值(For DBCP and Tomcat connection pools)
spring.datasource.minIdle=5 
//指定连接池中最大的活跃连接数.
spring.datasource.maxActive=20  
//指定连接池等待连接返回的最大等待时间,毫秒单位.
spring.datasource.maxWait=60000  
//指定空闲连接检查、废弃连接清理、空闲连接池大小调整之间的操作时间间隔
spring.datasource.timeBetweenEvictionRunsMillis=60000  
//指定一个空闲连接最少空闲多久后可被清除.
spring.datasource.minEvictableIdleTimeMillis=300000  
//指定获取连接时连接校验的sql查询语句.
spring.datasource.validationQuery=SELECT 1 FROM DUAL  
//当连接空闲时,是否执行连接测试.
spring.datasource.testWhileIdle=true  
//当从连接池借用连接时,是否测试该连接.
spring.datasource.testOnBorrow=false  
//在连接归还到连接池时是否测试该连接.
spring.datasource.testOnReturn=false  
//指定是否池化statements.
spring.datasource.poolPreparedStatements=true  
//
spring.datasource.maxPoolPreparedStatementPerConnectionSize=20  
//
spring.datasource.filters=stat,wall,log4j  
//在使用DBCP connection pool时指定要配置的属性
spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000

本地的话可以改成

jdbc:mysql://192.16.30.40:3306/life_vest

参考:
mysql 建立SSL连接问题,设置useSSL=false显式禁用SSL,或者设置useSSL=true

springboot配置mysql数据库spring.datasource.url报错的解决

有关You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true的更多相关文章

  1. ruby - 默认情况下使选项为 false - 2

    这是在Ruby中设置默认值的常用方法:classQuietByDefaultdefinitialize(opts={})@verbose=opts[:verbose]endend这是一个容易落入的陷阱:classVerboseNoMatterWhatdefinitialize(opts={})@verbose=opts[:verbose]||trueendend正确的做法是:classVerboseByDefaultdefinitialize(opts={})@verbose=opts.include?(:verbose)?opts[:verbose]:trueendend编写Verb

  2. ruby - 为什么 Integer.respond_to?( :even? ) 返回 false? - 2

    我一直在研究RubyKoans,我发现about_open_classes.rbkoan很有趣。特别是他们修改Integer#even?方法的最后一个测试。我想尝试一下这个概念,所以我打开了Irb并尝试运行Integer.respond_to?(:even?),但令我惊讶的是我得到了错误。然后我尝试了Fixnum.respond_to?(:even?)并得到了错误。我还尝试了Integer.respond_to?(:respond_to?)并得到了true,当我执行2.even?时,我也得到了true。我不知道发生了什么。谁能告诉我缺少什么? 最佳答案

  3. ruby - 使用 Ruby,计算 n x m 数组的每一列中有多少个 true 的简单方法是什么? - 2

    给定一个nxmbool数组:[[true,true,false],[false,true,true],[false,true,true]]有什么简单的方法可以返回“该列中有多少个true?”结果应该是[1,3,2] 最佳答案 使用转置得到一个数组,其中每个子数组代表一列,然后将每一列映射到其中的true数:arr.transpose.map{|subarr|subarr.count(true)}这是一个带有inject的版本,应该在1.8.6上运行,没有任何依赖:arr.transpose.map{|subarr|subarr.in

  4. ruby-on-rails - 如何扩展 Ruby Test::Unit 断言以包含 assert_false? - 2

    显然在Test::Unit中没有assert_false。您将如何通过扩展断言并添加文件config/initializers/assertions_helper.rb来添加它?这是最好的方法吗?我不想修改test/unit/assertions.rb。顺便说一句,我不认为这是多余的。我使用的是assert_equalfalse,something_to_evaluate。这种方法的问题是很容易意外使用assertfalse,something_to_evaluate。这将始终失败,不会引发错误或警告,并且会在测试中引入错误。 最佳答案

  5. Ruby:用于检查 nil/false 条件语句的干净代码? - 2

    我总是遇到这个Ruby问题,我想把它写得更干净。varacanbenila.valuecanalsobenila.valuehaspossibletrueorfalsevalueif(nota.nil?)&&(nota.value.nil?)&&a.value==falseputs"avalueisnotavailable"elseputs"avalueistrue"end问题在于条件语句过于笨拙且难以阅读。如何改进检查nil和false条件语句?谢谢,我是Ruby新手 最佳答案 Rubyonrails有一个叫做try的扩展,它允许

  6. ruby-on-rails - my_object.save(false) 并没有真正跳过我的 Active Record 验证 - 2

    所以我一直在努力解决我一直遇到的这个错误,我终于找到了导致它的原因。我一直觉得,当我调用@my_model.save(false)我会跳过我的ActiveRecord验证。事实证明这是部分正确的。我的对象正在保存到数据库中DESPITE我的ActiveRecord验证。我的问题存在是因为我的一个验证在验证过程中修改了一个子模型(这是一个24小时位置的调度应用程序,因此当午餐被保存时,我对照他们保存的那天和第二天检查它们以及确保用户不是指“凌晨2点”表示要上夜类。我的问题是:有没有办法真正跳过我的验证并直接移动到数据库?这是正常的ActiveRecord行为还是我应该更深入地研究我的验证

  7. ruby - 为什么 `x =! 5` 返回 false? - 2

    我一直在研究运算符优先级,有人向我解释说x=!5返回false。我似乎无法再次向自己解释原因。我知道=!不是运算符,所以x和5仍然存在。那么这是否意味着Ruby不知道该做什么?如果是这样,ruby应该返回一个错误,因为x可能没有值?Ruby会在运算符处停止,然后将false的值赋给x吗?x=!5=>false 最佳答案 这是因为x=!5被解释为x=(!5)(!hashigerprecedencethan=)。在Ruby中,除了nil和false之外,每个对象都是true。5具有真实值,您正在使用运算符!取反。因此false作为结果被

  8. ruby - Rails 比较 date.end_of_day.to_datetime 和 date.to_datetime.end_of_day 返回的日期对象值时返回 false - 2

    ruby1.9.3dev(2011-09-23修订版33323)[i686-linux]轨道3.0.20最近为什么在与DateTimeonRails相关的RSpecs项目上工作我发现在给定日期以下语句发出的值date.end_of_day.to_datetime和date.to_datetime.end_of_day虽然它们表示相同的日期时间,但比较时返回false。为了确认这一点,我打开了Rails控制台并尝试了以下操作1.9.3dev:053>monday=Time.now.monday=>2013-02-2500:00:00+05301.9.3dev:054>monday.cla

  9. ruby - 在数组中找到 block 返回 true 的第一个元素并返回 block 的返回值 - 2

    我需要遍历数组并将提供的block应用于每个元素,并返回block返回的第一个真值,这意味着我需要在获得真值后立即停止。下面是我的代码。我是ruby新手,我不确定这段代码是否是在重新发明轮子。也许已经有一个或多个库方法可以做到这一点?还是可以简化此代码?RS={:x=>%w(\d+a\d+bb\d+ccc\d+).map{|x|/^#{x}$/},:y=>%w(\w+1\w+22\w+333\w+).map{|x|/^#{x}$/}}.freezedeffinds,tr=RS[s]ifrr.eachdo|p|m=p.matchtreturnmifmendnilendendpfind:x

  10. ruby - IRB - Ruby 1.9.x 哈希语法 : {if: true} is not equal to {:if => true} - 2

    长话短说,我正在编写一个包含选项参数的方法,如果键的值:if评估为真,该方法将执行某些操作。当我使用新语法在IRB中尝试哈希时,我在IRB中遇到语法错误,提示保持打开状态:1.9.3p374:010>{if:true}1.9.3p374:011?>使用旧语法,效果很好:1.9.3p374:011>{:if=>true}=>{:if=>true}开始语句的所有关键字都表现出相同的行为。例如。def,do,module,case出现在中间和class中的其他保留字可以正常工作:else、end我的问题是:这是预期的行为、错误还是限制? 最佳答案

随机推荐