idea数据库测试连接成功,用户名和密码正确,但运行代码页面报错用户名或密码错误javax.servlet.ServletException: java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)

idea数据库测试连接成功,用户名和密码正确,但运行代码页面报错用户名或密码错误javax.servlet.ServletException: java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)

以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:
根据您提供的截图和描述,问题似乎出在JSP页面尝试连接MySQL数据库时,尽管在IDEA中测试连接成功,但实际运行时却遇到了权限问题。错误信息表明用户root在尝试连接到localhost时被拒绝,尽管密码被标记为已使用(using password: YES)。
首先,让我们检查几个可能的问题点:
数据库连接字符串:确保连接字符串是正确的。通常,它应该包括数据库的主机名、端口、数据库名、用户名和密码。格式类似于:
jdbc:mysql://localhost:3306/数据库名?useUnicode=true&characterEncoding=UTF-8
注意,您截图中的连接字符串使用了GB2312作为字符编码,这可能不是最佳选择,建议使用UTF-8。
用户名和密码:确认在JSP页面中使用的用户名和密码与数据库中设置的完全一致。
权限设置:检查MySQL数据库中root用户的权限设置,确保该用户有足够的权限连接到数据库并执行查询。可以通过MySQL命令行或图形界面工具(如phpMyAdmin)来检查和修改权限。
密码加密:如果MySQL服务器配置了密码加密,确保在连接字符串中使用正确的密码。
防火墙或网络问题:确保没有防火墙或网络设置阻止应用程序与数据库服务器的连接。
下面是一段示例代码,展示如何在JSP页面中建立数据库连接并执行查询:
<%@ page import="java.sql.*" %>
<%
String driverName = "com.mysql.cj.jdbc.Driver"; // MySQL JDBC驱动
String url = "jdbc:mysql://localhost:3306/数据库名?useUnicode=true&characterEncoding=UTF-8";
String userName = "root";
String userPwd = "您的密码";
try {
Class.forName(driverName);
Connection conn = DriverManager.getConnection(url, userName, userPwd);
String sql = "SELECT * FROM 表名";
PreparedStatement pstmt = conn.prepareStatement(sql);
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
// 处理结果集
}
rs.close();
pstmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
%>
参考资料:
如果您需要进一步的帮助,建议您提供更多的代码上下文或错误日志,以便更准确地诊断问题。