用jdbc远程连接mysql,报异常

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用jdbc远程连接mysql,报异常相关的知识,希望对你有一定的参考价值。

具体异常:com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: Server connection failure during transaction. Due to underlying exception: 'java.net.SocketException: java.net.ConnectException: Connection timed out'

连接超时了吧 一个是看看IP对不对 你ping一下那个IP看看通不通 然后 把mysql那个电脑的防火墙关了追问

i情况是这样的:两个数据库ip,数据库是互为备份的,但把jdbc的连接从第一个切到第二个,就报这异常,然后从第二个切回第一个正常??求解

追答

这说明程序什么都好使呗 肯定是第二个数据库服务器的问题 一个是看看用户名 密码对不对 再看看网络通不通 然后看看MySQL权限什么的对不对 我估计应该是MySQL用户有什么问题 你查查看看

参考技术A 远程连接:你需要在mysql中分配别人连接权限的同时还要打开可以让别人远程访问的设置

使用jdbc连接mysql为啥报错?

当我用JDBC连接MySql数据库时,编译报了如下错误:
错误1:
Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
这要求我们注册驱动时,把Class.forName("com.mysql.jdbc.Driver");改成 Class.forName("com.mysql.cj.jdbc.Driver");

当我信息满满的修改之后重新编译时,再次出现了错误:
错误2:
Fri Feb 22 08:55:38 CST 2019 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
这要求我们在设置url参数时,将useSSL=false,修改后 jdbc:mysql://localhost:3306/ds3?useSSL=false

当我修改后,本以为这下应该没问题了,没想到,再一次出现了问题
错误3:
Exception in thread "main" java.sql.SQLException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.
这要求我们修改时区,修改成jdbc:mysql://localhost:3306/ds3?useSSL=false&serverTimezone=UTC

终于,不在报错误了。
错误4:当我们配置xml文件时,要把&转为其本身的转义字符
配置properties文件的urlurl=jdbc:mysql:///ds3?useSSL=false&serverTimezone=UTC配置xml文件的url<property name="url">jdbc:mysql://localhost:3306/ds3?useSSL=false&serverTimezone=UTC</property>
参考技术A

你为什么不指定连接的数据库地址和端口,这样怎么连

以上是关于用jdbc远程连接mysql,报异常的主要内容,如果未能解决你的问题,请参考以下文章

MysqL的root用户不允许远程连接

java连接远程Oracle数据库关于SID

解决MySQL远程连接服务器上的MySQL报1130的错问题

使用 JDBC 将 Java 代码与远程 MySQL 数据库连接 [重复]

通过Navicat for MySQL远程连接的时候报错mysql 1130 的解决方法

远程连接Linux虚拟机上的mysql失败的解决方法