![dbvisualizer jdbc ssl dbvisualizer jdbc ssl](https://miro.medium.com/max/1400/1*e17FKzwsWRoGnmAdzR9bnw.png)
JDBC drivers can be used by Java applications or in database tools (for example, AquaData).
#Dbvisualizer jdbc ssl driver#
This driver is bundled with a VDB client installation, and is located in /tools/client-drivers/jdbc/denodo-vdp-jdbcdriver.jar.Īlternatively, you can connect directly to Denodo using an out-of-the-box PostgreSQL JDBC driver. If Denodo requires a longer maintenance window, it will be advertised in advance.įor the best performance, connect to Denodo using the Denodo JDBC Client driver. This is probably a good reason to use MariaDB instead of MySQL, recent versions of MariaDB even support TLSv1.3.Denodo is a highly available enterprise service that is only interrupted for maintenance on the third Sunday of each month, 5-6am. This detail is important, and really easy to overlook.
![dbvisualizer jdbc ssl dbvisualizer jdbc ssl](https://i.stack.imgur.com/ck1O9.png)
![dbvisualizer jdbc ssl dbvisualizer jdbc ssl](https://user-images.githubusercontent.com/1476649/34988694-883a5abc-fa8d-11e7-8387-77dc4ebfa9c9.png)
Well it turns out that MySQL supports two TLS/SSL implementations and the community edition is usually built with yaSSL (which only supports TLS 1 and TLS 1.1), while if it is compiled with OpenSSL (such as with the Enterprise edition) it supports TLS 1.2 as well.
![dbvisualizer jdbc ssl dbvisualizer jdbc ssl](https://community.openlinksw.com/uploads/default/original/1X/69423d465710f932abc81e438022b7e278804157.png)
#Dbvisualizer jdbc ssl install#
This is a MySQL install from an Ubuntu server using MySQL community edition. This query shows that the tls_version enabled for this particular server was: TLSv1,TLSv1.1 - so TLSv1.2 was not supported by this MySQL server, and that is why I was getting a Communications link failure error message. Next I queried to see what TLS protocols the server supports: SHOW GLOBAL VARIABLES This showed that the Ssl_version my connection was using was TLSv1.1. After I did this I wanted to see what protocol I was using, so I ran a query: SHOW SESSION STATUS After some testing I found that when I removed enabledTLSProtocols=TLSv1.2 from the JDBC connection string it worked. If you look closely you can see I was trying to force the use of TLS 1.2 as the TLS protocol to avoid using older less secure versions of the TLS / SSL protocols with enabledTLSProtocols=TLSv1.2. I was certain that my trustCertificateKeyStoreUrl was valid because I had used the same file to successfully connect over TLS on another server. So my JDBC connection string looked something like this: jdbc:mysql://10.1.2.3:3306/dbname?useSSL=true&requireSSL=true&trustCertificateKeyStoreUrl=file:///path/to/mysql-ca-truststore.p12&trustCertificateKeyStoreType=PKCS12&trustCertificateKeyStorePassword=pwd&enabledTLSProtocols=TLSv1.2 I had tested that I was able to connect from the app server to the MySQL server using the mysql command: mysql -host=10.1.2.3 -user=user -password -ssl -ssl-ca=./ca.pem Java trying to use IPv6, instead of IPv4 (it wasn't).Using an outdated JDBC driver (it wasn't).The MySQL server is not configured to allow remote connections (it did allow them).Firewall is blocking the connection (it wasn't).With a bit of googling you will find that there are tons of reasons why you might get this particular error message. With the relevant parts of the stacktrace, also being non helpful: at .(SQLError.java:174)Īt .(SQLExceptionsMapping.java:64)Īt .(ConnectionImpl.java:835)Īt .jdbc.ConnectionImpl.(ConnectionImpl.java:455)Īt .(ConnectionImpl.java:240)Īt .(NonRegisteringDriver.java:199) The driver has not received any packets from the server. The error I was getting was pretty generic: Communications link failure The last packet sent successfully to the server was 0 milliseconds ago. Ran into an interesting situation trying to configure a MySQL JDBC driver to connect over TLS (though the driver may call it SSL, TLS is the name for more recent versions of the protocol).