jdbc连接mycat失败,navicat连接成功

warrenw 2017-08-18 04:33:14
想尝试下mycat的读写分离和分表分库,配置好后用navicat连接试了下可以访问,到项目时候报连接被拒,一开始以为是项目的连接池过大,然后写了一个jdbc连mycat依然不行。
这是错误信息:
java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3558)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3490)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:919)
at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:3996)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1284)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2137)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:776)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:46)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:352)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:284)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
at com.qm.omp.business.web.upload.TestJDBC.main(TestJDBC.java:40)
这是mycat的配置信息:
<user name="root">
<property name="password">123456</property>
<property name="schemas">TESTDB</property>

<!-- 表级 DML 权限设置 -->
<!--
<privileges check="false">
<schema name="TESTDB" dml="0110" >
<table name="tb01" dml="0000"></table>
<table name="tb02" dml="1111"></table>
</schema>
</privileges>
-->
</user>
jdbc连接:
package com.qm.omp.business.web.upload;

import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class TestJDBC
{
public static void main(String[] args)
{
// 声明Connection对象
java.sql.Connection con;
// 驱动程序名
String driver = "com.mysql.jdbc.Driver";
// URL指向要访问的数据库名mydata
String url = "jdbc:mysql://127.0.0.1:8066/TESTDB";
// MySQL配置时的用户名
String user = "root";
// MySQL配置时的密码
String password = "123456";
// 遍历查询结果集
try
{
// 加载驱动程序
Class.forName(driver);
// 1.getConnection()方法,连接MySQL数据库!!
con = DriverManager.getConnection(url, user, password);
if (!con.isClosed())
System.out.println("Succeeded connecting to the Database!");
// 2.创建statement类对象,用来执行SQL语句!!
Statement statement = con.createStatement();
// 要执行的SQL语句
String sql = "select * from t_goods_info";
// 3.ResultSet类,用来存放获取的结果集!!
ResultSet rs = statement.executeQuery(sql);
System.out.println("-----------------");
System.out.println("执行结果如下所示:");
System.out.println("-----------------");
System.out.println("编码" + "\t" + "商品");
System.out.println("-----------------");

String job = null;
String id = null;
while (rs.next())
{
// 获取F_GOODS_NUM这列数据
job = rs.getString("F_GOODS_NUM");
// 获取F_GOODS_NAME这列数据
id = rs.getString("F_GOODS_NAME");

// 输出结果
System.out.println(id + "\t" + job);
}
rs.close();
con.close();
}
catch (Exception e)
{
// 数据库驱动类异常处理
System.out.println("Sorry,can`t find the Driver!");
e.printStackTrace();
}

}

}

按道理说navicat能连上,端口和账号密码都是可用的才对,由于项目需求是在windows部署的mycat,现在不知道怎么办了

...全文
2596 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
warrenw 2017-08-23
  • 打赏
  • 举报
回复
引用 4 楼 YXTS122 的回复:
楼主,能把你的mysql driver版本用百度云分享给我吗?我也急用。。。。。。
maven加个依赖就可以了 <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.39</version> </dependency>
YXTS122 2017-08-23
  • 打赏
  • 举报
回复
楼主,能把你的mysql driver版本用百度云分享给我吗?我也急用。。。。。。
warrenw 2017-08-22
  • 打赏
  • 举报
回复
找到解决办法了,换个一个mysql driver的版本就解决了,但是不知道根本原因,之前用的5.1.9的版本连不上,换了个5.1.39版本就可以用了,有没有人知道原因
warrenw 2017-08-21
  • 打赏
  • 举报
回复
引用 1 楼 sinat_28984567 的回复:
按照这个设置一下试试 http://blog.csdn.net/skywalker_leo/article/details/47274441
mycat不知道怎么设置这个,自己的mysql的库已经设置过了,项目可以直连连上,用这个中间件就连不上,有人遇到同样的问题的吗?
二月十六 2017-08-19
  • 打赏
  • 举报
回复
Re: Mycat 实现 MySQL的分库分表、读写分离、主从切换 =============================# MyCAT 作用是能够代替昂贵的oracle的MySQL集群中间件。     1) 一个彻底开源的,面向企业应用开发的“大数据库集群”    2) 支持事务、ACID、可以替代Mysql的加强版数据库    3) 一个可以视为“MySQL”集群的企业级数据库,用来替代昂贵的Oracle集群(核心价值观) (即:可不用 Orcale数据库及RAC等,以此代替)    4) 一个融合内存缓存技术、Nosql技术、HDFS大数据的新型SQL Server    5) 结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品    6) 一个数据库中间件产品 # MyCAT 目标:    1) 低成本的将现有的单机数据库和应用,平滑迁移到“云”端,解决数据存储和业务规模迅速增长情况下的数据瓶颈问题。从这一点介绍上来看,能满足数据库数据大量存储,提高了查询性能。    2) MyCat在大数据方面的运用不容小觑啊。 # MyCAT 特性    1) 支持 SQL 92标准    2) 支持Mysql集群,可以作为Proxy使用    3) 支持JDBC连接ORACLE、DB2、SQL Server,将其模拟为MySQL Server使用    4) 支持galera for mysql集群,percona-cluster或者mariadb cluster, (提供高可用性数据分片集群)    5) 自动故障切换,高可用性(failover & HA)    6) 支持读写分离,支持Mysql双主多从,以及一主多从的模式    7) 支持全局表,数据自动分片到多个节点,用于高效表关联查询    8) 支持独有的基于E/R 关系的分片策略,实现了高效的表关联查询    9) 多平台支持,部署和实施简单 # MyCAT 架构    用户可以把MyCAT看作是一个数据库代理,用mysql客户端工具(如Navicat)和命令访问,其核心功能就是分库分表,即将一个大表水平分割为N个小表,真正的存储在后端Mysql服务器中或其它数据库中。      

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧