idea数据库测试连接成功,用户名和密码正确,但运行代码页面报错用户名或密码错误javax.servlet.ServletException: java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
3条回答 默认 最新
- 阿里嘎多学长 2024-05-27 15:17关注
以下内容由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(); } %>
参考资料:
如果您需要进一步的帮助,建议您提供更多的代码上下文或错误日志,以便更准确地诊断问题。
解决 无用评论 打赏 举报 编辑记录 -
关注
解决 无用评论 打赏 举报 编辑记录- 一点都看不懂Java 2024-06-20 05:48关注解决 无用评论 打赏 举报