我试图连接mysql数据库后,运行了web应用程序,出现了一个错误,比如: HTTP状态500 -内部服务器错误类型、异常报告消息、内部服务器错误描述服务器遇到了一个内部错误,阻碍了它完成这个请求。com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: javax.servlet.ServletException:拒绝用户‘@’localhost‘到数据库'mysqluser=root’的访问
根本原因
拒绝用户‘@’localhost‘到数据库'mysqluser=root’的mysqluser=root访问
注意,异常的完整堆栈跟踪及其根源可在GlassFish服务器开放源码版4.0日志中找到。GlassFish服务器开放源码版4.0
我的JSP代码是:
`<%@ page import ="java.sql.*" %><%
字符串fname = request.getParameter("fname");
`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");} %>‘
我的数据库没有任何密码。通过以下步骤在netbeans中建立我的连接:步骤1:服务选项卡,步骤2:右键单击数据库并选择New Connection.第三步:遵循步骤。测试连接成功,然后完成。我正在使用20操作系统
发布于 2015-09-01 07:59:59
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);希望能帮上忙。
在jsp中编写db逻辑是个坏主意。最好在其他类中将用于db管理的代码外部化,并使用它获得相应的连接。
不要忘记在处理完db资源之后(我指的是关闭连接的最后一个块,PreparedStatement、ResultSet)来释放使用过的资源并避免内存泄漏。最好是编写一个分离的方法,它接受这些参数并检查它们是否为null,如果条件为真,相应的资源将被关闭。
发布于 2015-09-01 07:52:12
如果您没有密码登录,但是添加了argument...even字符串,您将丢失密码.并检查是否将mysql库添加到tomcat或glassfish中,如果您正在使用
https://stackoverflow.com/questions/32326226
复制相似问题