Java 握手时发生通信故障。是否有MySQL服务器运行在localhost:3306上

Java 握手时发生通信故障。是否有MySQL服务器运行在localhost:3306上,java,mysql,jdbc,Java,Mysql,Jdbc,我正在使用下面的代码 try { Class.forName("org.gjt.mm.mysql.Driver"); conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/testdb","root","root"); // cust is the DSN Name } catch (Exception e) { System.out.

我正在使用下面的代码

try {
            Class.forName("org.gjt.mm.mysql.Driver");
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/testdb","root","root"); // cust is the DSN Name
        } catch (Exception e) {
            System.out.println("Exception "+e);
        }
在运行时遇到此异常

尝试在命令提示符下使用netstat-a检查mysql是否在端口3306上运行,下面是跟踪

原始本地地址外部地址状态 TCP用户:epmap用户:0正在侦听 TCP用户:microsoft ds用户:0正在侦听
TCP用户:3306用户:0正在收听

好吧,用谷歌搜索你的问题,我想到了:

在mysql命令行客户端执行下一条语句时,尝试重置用户密码:

SET PASSWORD FOR 'root'@'localhost' = OLD_PASSWORD('root');
它似乎改变了mysql服务器上的身份验证方法

让我知道这是否有效

另一个选项是检查MySQL数据库版本与您正在使用的MySQL JDBC驱动程序之间的兼容性