Java通过Hive JDBC查询TiDB数据是否有用户验证过程?

请教前辈一个问题,非常感谢!

实验:Java利用 JDBC 访问 TiSpark.
实验步骤:
TiDB集群实验前已安装好。

  1. 安装spark集群

  2. 将tispark-assembly-2.3.3.jar放在${spark_path}/jars下,启动spark。

  3. 启动start-thriftserver.sh。

此时spark master节点起了10000端口,测试Java通过Hive JDBC查询TiDB数据,发现创建数据库连接时(DriverManager.getConnection)指定不指定用户密码,或即使指定数据库中不存在的用户密码,都可以查到tidb的数据,这里是否没有用户验证的过程?(像连接MySQL那样jdbc url、用户名、密码、库名)

Java代码:
public class JDBCToHiveUtils {
private static String driverName =“org.apache.hive.jdbc.HiveDriver”;
private static String Url=“jdbc:hive2://192.168.159.128:10000/TPCH_001”;
private static Connection conn;
public static Connection getConnnection()
{
try
{
Class.forName(driverName);
conn = DriverManager.getConnection(Url,"",""); //这里不输入用户密码信息就可以创建数据库连接,查数据;或者填写数据库中存在或不存在的用户密码信息同样可以查tidb中的数据。困惑点??
}
catch(ClassNotFoundException e) {
e.printStackTrace();
System.exit(1);
}
catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
public static PreparedStatement prepare(Connection conn, String sql) {
PreparedStatement ps = null;
try {
ps = conn.prepareStatement(sql);
} catch (SQLException e) {
e.printStackTrace();
}
return ps;
}
}

1 个赞

不知道你的问题是否已解决?

  • 如果你的问题已解决:
    • 如果你自己排查解决了,请附上你的解决方案,对自己的方案标记【对我有用】。
    • 被标记了【对我有用】的问题,才能被搜索到,这样子也能帮助他人更高效地找到答案。标记了【对我有用】还能获得 5 积分,5 经验值。
    • 如果你的问题还没有解决,请继续追问及反馈你遇到的问题。
1 个赞

你用的是 hive jdbc,自己需要改 hive-site.xml 配置,如果这里没有配置权限就不需要用户验证。

如果你想用 mysql 的用户验证,需要首先将 meta 数据交给 mysql 来管理。默认状态是给 hive 管理的。

具体的使用方法看这个文档 https://github.com/pingcap/tispark/blob/master/docs/how_to_use_tidb_as_metastore_db.md

1 个赞

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。