写在前头,本文只是记录这个坑,目前没有找到解决办法。 研究了一天了,也没有解决。
环境我使用vmware安装了alpine linux,安装过程见: 《vmware安装alpine linux》 https://www.bilibili.com/video/BV1H3411H7W4/
然后我在alpine linux中安装了docker安装过程见: 《alpine linux中安装docker》 https://blog.csdn.net/lxyoucan/article/details/123884548
然后我又在docker中安装mysql 5.7安装过程见: 《RuoYi开发实战-搭建开发环境》 https://blog.csdn.net/lxyoucan/article/details/123764953
查了一下root是支持%的
这样安装出来的mysql非常奇怪。使用mysql 命令行的客户端可以正常连接。但是使用jdbc连接就报错。
命令行mysql正常连接 Java代码中的Jdbc连接也无法正常连接。
这个让我非常的难以理解,我做了一系列的测试。基本把网上能试的方法都试过了。都无法解决。
以下方法我试过了,对我这问题无效。
- 注释
bind-address="127.0.0.1"
或者修改成 bind-address=“0.0.0.0” - 运行 java 并选择-Djava.net.preferIPv4Stack=true强制 java 使用IPv4而不是IPv6. 在 Linux 上,这也可以通过运行(或将其放入/etc/profile:
export _JAVA_OPTIONS="-Djava.net.preferIPv4Stack=true"
- 内网端口穿透到外网测试依然是命令行mysql可以连接,jdbc无法连接。
- 关闭防火墙
- 连接字符串中加
useSSL=true
- 我创建了三台alpine linux虚拟机,其中一台虚拟机(第1台)中的Mysql一切正常,另外两台相同的配置方法,就是无法Jdbc连接。
- 上面提到的第1台alpine虚拟机,3306端口的Mysql服务正常。但是在重新创建新的Mysql服务比如:3307就无法正常jdbc访问了。
- 把正常的3306端口停了,重新创建一个新的3306端口的mysql服务依然是不正常的。
- CentOS7中同样的方法在docker中安装mysql服务,一切正常。
- Ubuntu20.04中同样的方法在docker中安装的mysql服务,一切正常。
- macOS中docker安装mysql一切正常。
暂时没有找到最终的原因,目前只能暂时放弃使用alpine Linux系统。