weixin_74936623 2024-05-27 15:17 采纳率: 0%
浏览 234

idea数据库测试连接成功,用户名和密码正确,但运行代码页面报错用户名或密码错误

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

img

  • 写回答

3条回答 默认 最新

  • 阿里嘎多学长 2024-05-27 15:17
    关注

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


    根据您提供的截图和描述,问题似乎出在JSP页面尝试连接MySQL数据库时,尽管在IDEA中测试连接成功,但实际运行时却遇到了权限问题。错误信息表明用户root在尝试连接到localhost时被拒绝,尽管密码被标记为已使用(using password: YES)。

    首先,让我们检查几个可能的问题点:

    1. 数据库连接字符串:确保连接字符串是正确的。通常,它应该包括数据库的主机名、端口、数据库名、用户名和密码。格式类似于:

      jdbc:mysql://localhost:3306/数据库名?useUnicode=true&characterEncoding=UTF-8
      

      注意,您截图中的连接字符串使用了GB2312作为字符编码,这可能不是最佳选择,建议使用UTF-8

    2. 用户名和密码:确认在JSP页面中使用的用户名和密码与数据库中设置的完全一致。

    3. 权限设置:检查MySQL数据库中root用户的权限设置,确保该用户有足够的权限连接到数据库并执行查询。可以通过MySQL命令行或图形界面工具(如phpMyAdmin)来检查和修改权限。

    4. 密码加密:如果MySQL服务器配置了密码加密,确保在连接字符串中使用正确的密码。

    5. 防火墙或网络问题:确保没有防火墙或网络设置阻止应用程序与数据库服务器的连接。

    下面是一段示例代码,展示如何在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();
        }
    %>
    

    参考资料

    如果您需要进一步的帮助,建议您提供更多的代码上下文或错误日志,以便更准确地诊断问题。

    展开全部

    评论 编辑记录
  • 专家-赤兔[在线] 全栈领域优质创作者 2024-05-27 15:17
    关注

    引自免费微信小程序:皆我百晓生

    根据您提供的信息,看起来您正在尝试从Java Servlet中通过JDBC连接到MySQL数据库,并执行SQL查询。然而,在执行过程中遇到了Access denied for user 'root'@'localhost' (using password: YES)的错误,这表明尽管IDEA中的连接测试成功,但在实际运行代码时,使用的用户权限不足。

    为了解决这个问题,请检查以下几个方面:

    1. 数据库用户权限:确保用于运行代码的数据库用户(在这种情况下是root)具有足够的权限访问stu_info表。您可以登录到MySQL命令行客户端,使用管理员权限(例如root账户)并执行以下命令来查看用户的权限:

      SHOW GRANTS FOR 'root'@'localhost';
      

      如果没有对stu_info表的权限,您需要使用管理员权限添加适当的权限,例如:

      GRANT SELECT ON db_name.stu_info TO 'root'@'localhost';
      FLUSH PRIVILEGES;
      

      这里db_name应替换为您的数据库名称。

    2. 代码中的URL、用户名和密码:确认在代码中设置的URL、用户名和密码与IDEA中测试成功的连接参数完全一致。有时候可能由于复制粘贴等原因导致细微差异,比如多了一个空格或者特殊字符。

      您的代码片段显示了部分URL构建过程,确保完整的URL、用户名和密码正确无误。例如,URL应该是类似这样的格式:

      String url = "jdbc:mysql://localhost:3306/db_name?useUnicode=true&characterEncoding=GB2312";
      

      其中db_name应该替换为您的数据库名,端口号(这里是3306)也可能因配置不同而变化。

    3. 编码问题:确保您的文件保存为正确的编码(如UTF-8),因为有时不正确的编码可能导致用户名或密码中的字符被误解。

    4. 防火墙和安全组设置:确认您的服务器允许来自本地主机的连接。如果在云环境中,可能需要在安全组规则中开放MySQL的端口。

    5. 重新启动服务:在进行上述更改后,重启MySQL服务,确保新的配置生效。

    如果以上步骤都无法解决您的问题,那么可能是其他原因,比如Tomcat服务器的问题或者JDBC驱动程序版本问题。请提供更多信息,以便进一步分析。

    评论 编辑记录
  • 一点都看不懂Java 2024-06-20 05:48
    关注

    1、先直接使用数据库用户、密码以及地址登录,判断是否正确;
    2、如果不正确直接登录服务器把数据库密码修改了,再重新登录。

    评论
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部