通过以下两个类,我尝试连接到MySQL数据库.但是,我总是得到这个错误:
Wed Dec 09 22:46:52 CET 2015 WARN:不建议在没有服务器身份验证的情况下建立SSL连接.根据MySQL 5.5.45 +,5.6.26 +和5.7.6+要求如果未设置显式选项,则必须默认建立SSL连接.为了符合不使用SSL的现有应用程序,verifyServerCertificate属性设置为"false".您需要通过设置useSSL = false显式禁用SSL,或者设置useSSL = true并为服务器证书验证提供信任库.
这是使用以下main
方法的测试类:
public class TestDatabase { public static void main(String[] args) { Database db = new Database(); try { db.connect(); } catch (Exception e) { e.printStackTrace(); } db.close(); } }
这是Database
班级:
import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class Database { private Connection con; public void connect() throws Exception{ if(con != null) return; try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { throw new Exception("No database"); } String connectionURL = "jdbc:mysql://localhost:3306/Peoples"; con = DriverManager.getConnection(connectionURL, "root", "milos23"); } public void close(){ if(con != null){ try { con.close(); } catch (SQLException e) { e.printStackTrace(); } } } }
小智.. 546
您的连接网址应如下所示,
jdbc:mysql://localhost:3306/Peoples?autoReconnect=true&useSSL=false
这将禁用SSL并抑制SSL错误.
您的连接网址应如下所示,
jdbc:mysql://localhost:3306/Peoples?autoReconnect=true&useSSL=false
这将禁用SSL并抑制SSL错误.
如何使用SSL但关闭服务器验证(例如在您自己的计算机上处于开发模式时):
jdbc:mysql://localhost:3306/Peoples?verifyServerCertificate=false&useSSL=true
提到的url
样子:
jdbc:mysql://hostname:3306/hibernatedb?autoReconnect=true&useSSL=false
但是当您提及&签名时,在xml配置中,IDE会显示以下错误:
The reference to entity "useSSL" must end with the ';' delimiter.
然后你必须明确地使用&
,而不是&
被确定为&
通过xml
其后xml
你得给在这样的xml配置的网址:
jdbc:mysql://hostname:3306/hibernatedb?autoReconnect=true&useSSL=false
另一种方法是:
Properties properties = new Properties(); properties.setProperty("user", "root"); properties.setProperty("password", "milos23); properties.setProperty("useSSL", "false"); properties.setProperty("autoReconnect", "true"); try (Connection conn = DriverManager.getConnection(connectionUrl, properties)) { ... } catch (SQLException e) { ... }
虽然,我不认为需要自动重新连接设置来删除警告.
我也发现了这个警告,然后通过对连接字符串使用SSL = false后缀来修复它,就像这个示例代码一样.
例:
connectionString = "jdbc:mysql://{server-name}:3306/%s?useUnicode=yes&characterEncoding=UTF-8&useSSL=false"
你需要像这样使用你的mysql路径:
在与MySQL建立连接时使用它来解决配置单元中的问题
javax.jdo.option.ConnectionURL jdbc:mysql://localhost/metastore?createDatabaseIfNotExist=true&autoReconnect=true&useSSL=false metadata is stored in a MySQL server
这对我来说没问题:
this.conn = (Connection)DriverManager .getConnection(url + dbName + "?useSSL=false", userName, password);