当前位置: 首页 > 面试题库 >

用户'root'@'localhost'的访问被拒绝

华安民
2023-03-14
问题内容

我正在尝试从数据库中获取记录。但我正面临拒绝访问的问题。我尝试了在堆栈溢出中提到的其他解决方案,例如向用户授予特权。

访问数据库的代码:

public void service(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException{
  response.setContentType("text/html");
  PrintWriter out = response.getWriter();
  out.println("<html>");
  out.println("<head><title>Servlet JDBC</title></head>");
  out.println("<body>");
  out.println("<h1>Servlet JDBC</h1>");
  out.println("</body></html>");  
  // connecting to database
  Connection con = null;  
  Statement stmt = null;
  ResultSet rs = null;
  try {
      Class.forName("com.mysql.jdbc.Driver");
      con = DriverManager.getConnection("jdbc:mysql://localhost:3306/employees","root","root");
      stmt = con.createStatement();
      rs = stmt.executeQuery("SELECT * FROM employee");
      // displaying records
      while(rs.next()){
      out.print(rs.getObject(1).toString());
      out.print("\t\t\t");
      out.print(rs.getObject(2).toString());
      out.print("<br>");
  }
  } catch (SQLException e) {
      throw new ServletException("Servlet Could not display records.", e);
  } catch (ClassNotFoundException e) {
      throw new ServletException("JDBC Driver not found.", e);
  } finally {
      try {
          if(rs != null) {
              rs.close();
              rs = null;
          }
          if(stmt != null) {
              stmt.close();
              stmt = null;
          }
          if(con != null) {
              con.close();
              con = null;
          }
      } catch (SQLException e) {}
  }
    out.close();
  }

错误的堆栈跟踪:

java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
    com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1078)
    com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4187)
    com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4119)
    com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:927)
    com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:4686)
    com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1304)
    com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2483)
    com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2516)
    com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2301)
    com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:834)
    com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
    sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    java.lang.reflect.Constructor.newInstance(Unknown Source)
    com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
    com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:416)
    com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:346)
    java.sql.DriverManager.getConnection(Unknown Source)
    java.sql.DriverManager.getConnection(Unknown Source)
    WebAppAss.DatabaseAccess.service(DatabaseAccess.java:36)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728)

在这种情况下可能是什么问题。我尝试创建一个新的数据库,但是也没有用。


问题答案:

问题是授予information.schema表根用户的权限。’root’@’%’没有任何权限。.就像我以前127.0.0.1用作连接地址一样,因此它给出了拒绝访问错误..
%是IP地址的通配符。所以mysql认为root@127.0.0.1是其他任何IP地址,但不是localhost。因此,只授予它权限就解决了我的问题。尝试使用Mysql客户端(如SQLYogetc)。授予权限以及与用户查看权限很容易。



 类似资料:
  • 问题内容: $ ./mysqladmin -u root -p ‘ 编辑 ‘ 输入密码: mysqladmin:在“ localhost”处连接到服务器失败错误: “对用户“ root” @“ localhost”的访问被拒绝(使用密码:是) 我怎样才能解决这个问题? 问题答案: 打开并编辑或,具体取决于您的发行版。 在下添加 重启MySQL 您现在应该可以使用以下命令登录mysql 跑 设置新密

  • 这是我的代码: 对于dbServername,我尝试过使用localhost、localhost:8080、localhost:3306和127.0.0.1,但只有127.0.0.1和localhost:3306似乎通过了测试,并给出了可能的错误。我在localhost(没有这样的文件或目录*)和localhost:8080(MySQL已经消失)中遇到了不同的错误。 因此,考虑到IP as dbS

  • 在Ubuntu中使用MySQL我做了以下步骤: 我收到一个错误: 拒绝用户“root”@"localhost“的访问(使用密码:YES)

  • 问题内容: 我正在设置新服务器,并继续遇到此问题。 当我尝试以root用户登录MySQL数据库时,出现错误: 错误1698(28000):用户’root’@’localhost’的访问被拒绝 是否通过终端(SSH),PHPMyAdmin或MySQL客户端(例如Navicat)连接都没有关系。他们都失败了。 我在mysql.user表中查看了以下内容: 如您所见,root应该具有访问权限。 该服务器

  • 我在PC上使用WAMP服务器2.2。在phpMyAdmin(5.5.24)中,我编辑了“root”用户(带有“localhost”主机),并给它一个密码“root”。这是一个很大的错误,我正试图挽回。现在,当我转到localhost/phpmyadmin/时,我得到了左侧的数据库菜单,但是主框架有一个错误,它是: 我尝试将用户的密码改回无密码;我尝试修改config.inc.php文件以添加新密码

  • 问题内容: 我是MySQL的新手,我想在Windows桌面上运行WordPress,它需要MySQL。 我安装了Microsoft提供的所有内容。我从来没有为MySQL设置过root密码,在安装WordPress的最后一步中,它要求输入MySQL服务器密码。 root的默认密码是多少(如果有的话)以及如何更改它? 我试过了: 但是它显示了我: 在此之后,我尝试: 但是,它要求输入我没有的密码。 更