我试图在运行Web应用程序后连接mysql数据库时出现如下错误: HTTP状态500 - 内部服务器错误 类型异常报告 消息内部服务器错误 description服务器遇到内部错误,导致无法完成此请求。 例外 javax.servlet.ServletException:com.mysql.jdbc.exceptions.MySQLSyntaxErrorException:拒绝访问用户'' localhost'到数据库' mysqluser = root'
根本原因
com.mysql.jdbc.exceptions.MySQLSyntaxErrorException:拒绝用户访问'' localhost'到数据库' mysqluser = root'
注意GlassFish Server Open Source Edition 4。0日志中提供了异常的完整堆栈跟踪及其根本原因。 GlassFish Server开源版4.0
我的JSP代码是:
`<%@ page import ="java.sql.*" %>
<%
字符串fname = request.getParameter(&#34; fname&#34;);
`String lname = request.getParameter("lname");
`String email = request.getParameter("email");
`String user = request.getParameter("uname");
`String pwd = request.getParameter("pass");
Class.forName("com.mysql.jdbc.Driver");
连接con = DriverManager.getConnection("jdbc:mysql://localhost:3306/mysql"+ "user=root");
语句st = con.createStatement();
`int i = st.executeUpdate("insert into members(first_name, last_name,email, uname, pass) values ('" + fname + "','" + lname + "','" + email + "','" + user + "','" + pwd + "')");
`if (i > 0)
`{
`out.print("Registration Successfull!"+"<ahref='index.jsp'>Go to Login</a>");
`}
`else {
`response.sendRedirect("index.jsp");
}
%GT;
`
我的数据库没有任何密码。 我通过以下步骤在netbeans中建立连接: 第1步:服务选项卡 第2步:右键单击Databases并选择New Connection ... 第3步:按照步骤操作。 测试连接成功完成。 我正在使用Linux Fedora 20 OS
答案 0 :(得分:1)
您缺少密码参数...即使您没有密码登录,但使用empt字符串添加...并检查您是否将tomql库添加到tomcat或glassfish
答案 1 :(得分:1)
声明Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/mysql"+ "user=root");
错误,因为:
url
与"user=root"
的连接将导致字符串:jdbc:mysql://localhost:3306/mysqluser=root
,这是明确错误的。在URL中,您缺少数据库名称(如果它是mysql,那么您在命名时遇到问题,我建议您更改数据库名称)。
<强>解决方案:强>
分别为url,user和password定义变量(即使未设置密码,也必须将其作为空字符串提供)。请参阅以下代码:
String url="jdbc:mysql://localhost:3306/databaseName";
String user="root";
String password="";
Connection conn = DriverManager.getConnection(url, user, password);
希望它有所帮助。
P.S。在jsp中编写db逻辑是个坏主意。最好将其他类中的数据库管理代码外部化,并使用它来获取相应的连接。
P.P.S。在完成它们之后不要忘记管理你的数据库资源(我正在谈论你正在关闭Connection,PreparedStatement,ResultSet的finally块)以释放使用过的资源并避免内存泄漏。编写一个分离的方法是个好主意,该方法接受这些参数并将它们检查为null,如果condition为true,则相应的资源将被关闭。