Java Can';t将Spring Boot应用程序中Docker中的MySQL与IDE中的OpenJDK 8连接起来
我在不同的linux发行版中运行过这个问题。我使用的是相同的SpringBoot应用程序和docker compose文件,但在运行/调试应用程序(以及从DataGrip)时,我无法从Intellij社区IDE连接到Docked MySQL 我当前的设置:Java Can';t将Spring Boot应用程序中Docker中的MySQL与IDE中的OpenJDK 8连接起来,java,spring,spring-boot,docker,docker-compose,Java,Spring,Spring Boot,Docker,Docker Compose,我在不同的linux发行版中运行过这个问题。我使用的是相同的SpringBoot应用程序和docker compose文件,但在运行/调试应用程序(以及从DataGrip)时,我无法从Intellij社区IDE连接到Docked MySQL 我当前的设置: 拇指草 OpenJDK 1.8.0.292版本 Docker 20.10.6-ce SpringBoot v2.1.8.0版本 我的docker编写yml文件: version: '2' services: demo-mysql:
- 拇指草
- OpenJDK 1.8.0.292版本
- Docker 20.10.6-ce
- SpringBoot v2.1.8.0版本
version: '2'
services:
demo-mysql:
image: mysql:5.7.18
restart: always
environment:
- MYSQL_USER=user
- MYSQL_PASSWORD=password
- MYSQL_DATABASE=database
- MYSQL_RANDOM_ROOT_PASSWORD=yes
ports:
- 3306:3306
从IDE运行应用程序时发生SpringBoot错误(字符限制):
我目前正在使用OpenSUSE,我已经在Fedora Workstation 33和34上运行了这个问题。Java应用程序不使用SSL,但在其他发行版(如Manjaro、Ubuntu、Pop_OS!)上运行时出现SSL握手错误
我禁用了防火墙,从java.security
文件中注释了jdk.tls.disabledAlgorithms
,尝试了spring.datasource.url
,使用0.0.0.0:3306
,127.0.0.1:3306
,:3306
。我在这个问题上花了几天的时间,因此更改了发行版,感谢您的帮助。我可以提供任何需要的信息
(更新)
JDBC连接字符串为:
spring.datasource.url=JDBC:mysql://0.0.0.0:3306/database?useUnicode=yes&characterEncoding=UTF-8
您使用什么库与mysql通信?您使用的是什么jdbc连接字符串。spring boot是否也在您的容器中运行?您是否通过任何可用的第三方客户端连接到mysql来验证mysql是否正在运行?为什么使用docker compose版本2而不是3?应用程序使用JPA,我用JDBC字符串更新了我的问题。Docker Compose文件属于我工作的公司,因此我没有更改它。我尝试使用DataGrip应用程序连接数据库,但它也会出现SSLHandshake错误。如果无法使用DataGrip连接,则问题在于MySql服务器本身。您应该在启动时检查输出,以确保它实际上正在启动。是的,我同意这一点。我可以进入docker容器本身并在其中使用mysql命令。我认为这是一个连接问题,就像防火墙问题一样。但我没有使用防火墙,我也检查了docker监听3306端口的情况。