警告:建议不要在没有服务器身份validation的情况下建立SSL连接

您好我试图通过使用eclipse和tomcat的java servlet连接到mysql数据库,但是我发出以下错误:“警告:不建议在没有服务器身份validation的情况下建立SSL连接”。我添加了“useSSL = false?” 到连接url但仍然得到相同的错误。任何建议? servlet的代码是:

package com.simpleWebApplication.servlet; import java.io.IOException; import java.io.PrintWriter; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/register") public class RegisterServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public RegisterServlet() { super(); // TODO Auto-generated constructor stub } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); response.setContentType("text/html"); PrintWriter out = response.getWriter(); String idusers = request.getParameter("0"); String name = request.getParameter("name"); String surname = request.getParameter("surname"); String gender = request.getParameter("gender"); String birthdate = request.getParameter("birthdate"); String workAddress = request.getParameter("workAddress"); String homeAddress = request.getParameter("homeAddress"); try{ Class.forName("com.mysql.jdbc.Driver"); Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/mysys?autoReconnect=true&useSSL=false","root","pass"); PreparedStatement ps = con.prepareStatement("insert into Users values(?,?,?,?,?,?)"); ps.setString(1, idusers); ps.setString(2, name); ps.setString(3, surname); ps.setString(4, gender); ps.setString(5, birthday); ps.setString(6, workAddress); ps.setString(7, homeAddress); int i=ps.executeUpdate(); if(i>0) { out.println("You are sucessfully registered"); } } catch(Exception se) { se.printStackTrace(); } } } 

这是与servlet连接的register.jsp页面。

       Register New User   
User Details
Name
Surname
Gender Male Female
Birthdate
Work Address
Home Address

堆栈错误:

  Wed Sep 28 08:58:53 EEST 2016 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. java.sql.SQLException: Access denied for user 'username'@'localhost' (using password: YES) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:963) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3966) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3902) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:875) at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1712) at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1228) at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2253) at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2284) at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2083) at com.mysql.jdbc.ConnectionImpl.(ConnectionImpl.java:806) at com.mysql.jdbc.JDBC4Connection.(JDBC4Connection.java:47) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Unknown Source) at com.mysql.jdbc.Util.handleNewInstance(Util.java:404) at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:410) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:328) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at com.simpleWebApplication.servlet.RegisterServlet.doPost(RegisterServlet.java:47) at javax.servlet.http.HttpServlet.service(HttpServlet.java:650) at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:218) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:442) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1082) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:623) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Unknown Source) 

在此处输入图像描述

尝试删除行doGet(请求,响应); 因为你在上面的例子中没有get方法。 我总是用jdbc得到这个警告,但一切运行正常。

这是你写的:

 "jdbc:mysql://localhost:3306/mysys?autoReconnect=true&useSSL=false","root","pass"; 

以下是我认为您可能需要写的内容:

 "jdbc:mysql://localhost:3306?useSSL=false/mysys?autoReconnect=true","root","pass"; 

如果这解决了您的问题,请告诉我。

首先,您必须确保正确输入用户名密码

当您尝试使用DriverManager连接时,您得到的错误来自servlet代码:

 Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/mysys?autoReconnect=true&useSSL=false","root","pass"); 

如果您使用MySQL Workbench或其他软件,请尝试使用该软件检查连接数据库和表的参数。

当你得到useSSL警告时,它只是一个警告。 检查此问题: 连接到MySQL数据库时有关SSL连接的警告