书接上文:https://blog.csdn.net/mbh12333/article/details/80539294
我的配置文件:
my.ini
[mysql]
; 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
bind-address=0.0.0.0
; 修改默认时区
default-time-zone='+08:00'
; 就是将mysql回收空闲连接的时间变长,mysql默认回收时间是8小时
wait_timeout=86400
; 设置3306端口
port=3307
; 设置mysql的安装目录
basedir=C:\WinSoft\mysql-8.0.21-winx64
; 设置mysql数据库的数据的存放目录
datadir=C:\WinSoft\mysql-8.0.21-winx64\data
; 允许最大连接数
max_connections=200
character-set-server=utf8
; 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
我用的方法:
- my.ini 下设置 bind-address=0.0.0.0
- ping ip 检查能够连接
- 修改端口号,我改成了3007
- 设置入站出站规则 3307加入规则中
- 8.0 好像加入了插件机制,caching_sha2_password 如果你用的客户端不支持,更新到新版本客户端。如果像我一样是mysql在win10虚拟机里你就用客户端-用户改下就行了
- 浏览器插件vpn 或者 客户端翻墙VPN都会导致这个问题,关掉后需要重启电脑
由于我的是Win10虚拟机里面装的mysql,我用navicat可以连接,我就忽略了 root@’%'的问题,因为navicat用户里面看到设置是忽略所有主机我就以为设置成功了。找遍了大量网络博客资料都无法解决,最后我用命令再设置一遍root@%
8.0+以上语法:
ALTER user 'root'@'%' IDENTIFIED BY 'root';
FLUSH PRIVILEGES;
如果Spring Boot 无法连接请,请在url后面设置基本的参数,如果感觉参数没有问题,按照以下步骤解决:
- 请确认连接的是虚拟机还是其他主机还是本机。(因为我就坑了,我一直以为能连上,高了一天,到晚上我才用客户端连发现也无法连接)
- ip确认好后,确认端口号,因为我的端口号改了,所以你们看情况
- 最后就是用户名密码
- 如果还不行就用本机客户端工具连接,例如navicat(最新版本),别用idea什么乱七八糟的。
- 最后如果客户端可以,就是代码问题了,检查mysql jar版本是否跟数据库版本是否一致,select @@version 查看数据库详细版本,版本设置完毕后。还连接不上应该就是mysql.ini 本身配置文件(确认没问题跳过) 或者 url?后面参数没有符合要求,这一类的百度方法很多,子集查阅一下,一般就是时区啊什么的或者ssl什么的
我的数据源配置:
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver # 可省略spring会根据url推导
url: jdbc:mysql://192.168.1.9:3307/testdb?useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=utf-8&autoReconnect=true&serverTimezone=Asia/Shanghai
username: root
password: root