Access denied for user 'root'@'localhost'

Access denied for user 'root'@'localhost'

九月 08, 2021 4:45:53 下午 com.alibaba.druid.pool.DruidDataSource info

信息: {dataSource-1} inited

九月 08, 2021 4:45:53 下午 com.alibaba.druid.pool.DruidDataSource error

严重: create connection SQLException, url: jdbc:mysql://localhost:3306/test?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai &allowPublicKeyRetrieval=true, errorCode 1045, state 28000

java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)

at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129)

at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)

at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:828)

at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:448)

at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:241)

at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:198)

at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1644)

at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1710)

at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:2753)



package com.imooc.homework.jdbc1.sample;
/**
* Druid连接池的配置和使用
*/

import com.alibaba.druid.pool.DruidDataSourceFactory;
import com.imooc.homework.jdbc1.common.DbUtils;

import javax.sql.DataSource;
import java.io.FileInputStream;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Properties;

public class DruidSample {
public static void main(String[] args) {

Properties properties=new Properties();
       String propertyFile = DruidSample.class.getResource("/druid-config.properties").getPath();

      try {
propertyFile = new URLDecoder().decode(propertyFile,"UTF-8");   //%20转化为空格
           //   1、加载属性文件
           properties.load(new FileInputStream(propertyFile));
      } catch (Exception e) {
e.printStackTrace();
       }
System.out.println(propertyFile);

       Connection conn= null;
       PreparedStatement pstmt = null;
       ResultSet rs = null;
       try {
//   2、获取DataSource对象
           DataSource dataSource=DruidDataSourceFactory.createDataSource(properties);
           // 3、创建数据库连接

           conn=dataSource.getConnection();
           pstmt=conn.prepareStatement("select * from goods limit 0,10");
           rs=pstmt.executeQuery();
           while (rs.next()) {
//next返回布尔值,如果存在下一条记录返回true,如果没有数据返回false
               // 结果集一系列get方法中参数可以输入字段索引或者字段对应的名称
               //JDBC中字段索引都是从1开始,而不是0
               Integer goodsId=rs.getInt(1);
               String name = rs.getString("name");
               float price = rs.getFloat(3);
               String desp = rs.getString("desp");;
               System.out.println(goodsId+"-"+name+"-"+price+"-"+desp);
           }
} catch (Exception e) {
e.printStackTrace();
       }finally {
DbUtils.closeConnection(rs,pstmt,conn);
       }
System.out.println(conn);





   }




}
Access denied for user 'root'@'localhost'
访问用户'root'@'localhost'拒绝访问

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,建议检查下配置文件druid-config.properties中数据库的密码password是否正确。

https://img1.sycdn.imooc.com//climg/61387b3e09eb0b2307920156.jpg

祝学习愉快~

  • 晓舟 提问者 #1

    你好,应该是正确的,因为除这个示例外我的另一个goodsTest使用的也是同样的用户名和密码~~可是查询正常

    现贴出goodTest、QueryPriceCommand和Dbutils中的数据库账号和密码可以证明为同一

    package com.imooc.homework.jdbc1.common;
    import javax.swing.plaf.nimbus.State;
    import java.sql.*;

    public class DbUtils {
    /**
        * 创建新的数据库连接
        * @return 新的Connection对象
        * @throws SQLException
        * @throws ClassNotFoundException
        */

       public static Connection getConnection() throws SQLException, ClassNotFoundException {
    String dbDriver="com.mysql.cj.jdbc.Driver";
           String dbUrl="jdbc:mysql://localhost:3306/test?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai &allowPublicKeyRetrieval=true";
           //1、加载并注册驱动
           Class.forName(dbDriver);
           //2、创建数据库连接
           Connection conn= DriverManager.getConnection(dbUrl,"dev","abc123456");

           return conn;
       }


    /**
        * 关闭连接,释放资源
        * @param rs 结果结对象
        * @param stmt Statement对象
        * @param conn  Connection对象
        */

       public static void closeConnection(ResultSet rs, Statement stmt,Connection conn){
    try{
    if (rs!=null){
    rs.close();
               }
    }catch(Exception e) {
    e.printStackTrace();
           }

    try{
    if(stmt!=null){
    stmt.close();
               }
    } catch (Exception e) {
    e.printStackTrace();
           }

    try {
    if(conn!=null && !conn.isClosed())
    conn.close();
           } catch (Exception e) {
    e.printStackTrace();
           }
    }


    }

    2021-09-08 17:43:26
  • 晓舟 提问者 #2
    package com.imooc.homework.jdbc1;
    import com.imooc.homework.jdbc1.command.*;

    import java.util.Scanner;

    public class goodsTest {
    public void mainMenu(){
    System.out.println("查询菜单");
               System.out.println("1--请输入查询价格在多少元以下商品");
               System.out.println("2--请输入需要查询的商品名称:");
               System.out.println("3--添加商品");
               System.out.println("4--删除商品");
               System.out.println("5--分页查询");
               System.out.println("0--退出");
           }

    public static void main(String[] args) {
    goodsTest goodTest=new goodsTest();
           Scanner console=new Scanner(System.in);
           Command command = null;
           goodTest.mainMenu();
           while(true) {

    System.out.print("请输入要操作的数字:");
               Integer n = console.nextInt();
               if (n < 0 || n > 9)
    System.out.println("输入有误");
               switch (n) {
    case 0:
    System.out.println("退出");
                       System.exit(0);
                       break;
                  case 1:
    command = new QueryPriceCommand();
                      command.execute();
                      break;
                   case 2:
    command = new QueryGoods();
                       command.execute();
                   case 3:
    command = new InsertCommand();
                       command.execute();
                   case 4:
    command = new DeleteCommand();
                       command.execute();

                   case 5:
    command = new PaginationCommand();
                       command.execute();
               }

    }



    }

    }


    2021-09-08 17:43:52
  • 晓舟 提问者 #3
    package com.imooc.homework.jdbc1.command;

    import java.sql.*;
    import java.util.Scanner;

    public class QueryPriceCommand implements Command{
    @Override
       public void execute() {
    System.out.println("请输入要查询的价格区间最低为:");
       Scanner console= new Scanner(System.in);
       Float dprice1 = console.nextFloat();
       System.out.println("请输入要查询的价格区间最高为:");
       Float dprice2 = console.nextFloat();
       Connection conn = null;
       PreparedStatement pstmt = null;
       ResultSet rs = null;
       try {
    String dbDriver="com.mysql.cj.jdbc.Driver";
           String dbUrl="jdbc:mysql://localhost:3306/test?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai &allowPublicKeyRetrieval=true";
           //1、加载并注册驱动
           Class.forName(dbDriver);
           //2、创建数据库连接
           conn= DriverManager.getConnection(dbUrl,"dev","abc123456");
           //System.out.println(conn);
           //3、创建Statement对象

           String sql="select * from goods where price>=? AND price<=? ";
           pstmt = conn.prepareStatement(sql);
           pstmt.setFloat(1,dprice1);
           pstmt.setFloat(2,dprice2);
           rs = pstmt.executeQuery();
           //4、遍历查询结果
           while (rs.next()) {
    //next返回布尔值,如果存在下一条记录返回true,如果没有数据返回false
               // 结果集一系列get方法中参数可以输入字段索引或者字段对应的名称
               //JDBC中字段索引都是从1开始,而不是0
               Integer goodsId=rs.getInt(1);
               String name = rs.getString("name");
               float price = rs.getFloat(3);
               String desp = rs.getString("desp");;
               System.out.println(goodsId+"-"+name+"-"+price+"-"+desp);
           }
    //5、关闭连接,释放资源
       } catch (ClassNotFoundException e) {
    e.printStackTrace();
       } catch (SQLException e) {
    e.printStackTrace();
       }finally {
    try {
    if(conn!=null && !conn.isClosed())
    conn.close();
           } catch (Exception e) {
    e.printStackTrace();
           }
    }

    }
    }



    2021-09-08 17:44:24
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师