docker整合springboot/cloud——mysql8.0.26

前言:
博主从win换成mac后,想试着自己配一下docker环境,花了足足3到4天的时间。
由于中土存在各种中间件的兼容问题,mac版和win版的不一致,中间件版本过新等问题,且大多数博客对于版本的描述不够清晰,很难帮到忙,故博主斗胆记录一下,希望对大家有帮助。

环境:

  • springboot: 2.7.0
  • nacos: 2.1.0
  • elasticsearch: 8.2.0
  • kibana: 8.2.0
  • springcloud: 2021.0.3
  • springcloudalibaba: 2021.0.1
  • mysql: 8.0.26
  • redis: 7
  • rabbitmq: 3.9.11
  • jdk: 8
  • kafka: 3.5.11

mysql8

目前网上的博客大多都是mysql5.7版本之类的,8版本的较少,所以会出一些错误。

特别是连接数据库的时候,大家发现明明我的账号密码都对的,为什么还是说连接错误呢?这其实很可能不是我们自己的问题。

下面给出我的连接数据库的配置:

  datasource:
    url: jdbc:mysql://db:3306/mall?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false&allowPublicKeyRetrieval=true
    username: root
    password: XXXXXXXX
    druid:
      initial-size: 5 #连接池初始化大小
      min-idle: 10 #最小空闲连接数
      max-active: 20 #最大连接数
      web-stat-filter:
        exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*" #不统计这些请求数据
      stat-view-servlet: #访问监控网页的登录用户名和密码
        login-username: druid
        login-password: druid

这里需要注意的是一下几点:

1、如果你把项目放到docker里面,就不要用localhost了,要么你直接用ip地址,要么就和我一样用这种别名。
而这种别名的配置则放在docker-compose里面。
这个在文章最后会给大家放一个链接将docker-compose怎么写。

2、由于版本升级和docker的原因,在连接数据库的时候最好加上这些后缀:

2.1、useUnicode=true&characterEncoding=utf-8:一旦设置了之后,不管数据库是什么编码,读取的时候都会转换成UTF-8,存取的时候还是会按数据库编码存

2.2、serverTimezone=Asia/Shanghai:问题在 MySQL8.0的驱动包跟之前不一样了,默认时区是全球统一时间 (UTC),北京时间是 UTC+8,这句话不加就导致了很多人就算不在docker里面都连不上数据库,mysql8就很烦。

2.3、useSSL=false:useSSL=true是进行安全验证,一般通过证书或者令牌什么的,useSSL=false就是通过账号密码进行连接,通常使用useSSL=false,这个也是mysql8的问题,不过这个问题并不是到了8之后才有的,5.7之后就存在这个问题了。ssl会认证用户的服务器,然后加密数据,最后维护数据的完整性。但是我们用docker相当于把它部署到一个linux服务器上,所以用不到这个。

2.4、allowPublicKeyRetrieval=true。

这个指令比较玄学,是由于报了下面错误才用的,Public Key Retrieval is not allowed(不允许检索公钥)。博主也去网上查了很多资料,大家的话大差不差,就是在第一次连接的时候会出问题,第二次连的时候貌似数据库就缓存的这个配置信息,既然加上能用,大家就加上。有一些朋友也说到,如果我们使用一些可视化工具比如navicat这类的也能解决。

另一种法是:使用指令mysql -u root -p指令进入mysql,将验证方式修改为“mysql_native_password”

USE mysql; 
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
FLUSH PRIVILEGES;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值