首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java GSS/JDBC问题

Java GSS/JDBC问题
EN

Stack Overflow用户
提问于 2015-08-04 04:26:24
回答 1查看 1.5K关注 0票数 1

我有一个不同寻常的问题要解决。我是在Mac上开发的。我正在编写一些使用jdbc连接到数据库的代码。我不能直接访问db服务器--要访问它,我必须在ssh上设置端口转发,该端口转发到db服务器所在的网络中的代理服务器。我代理进入的服务器是Linux服务器,数据库是Windows上的MS Sql server。一旦我设置了端口转发,我就可以使用像SquirrelSQL这样的DB浏览工具连接到数据库。当我尝试使用我编写的jdbc代码,使用完全相同的JDBC驱动程序连接到数据库时,我得到的结果是:

代码语言:javascript
复制
Exception in thread "main" java.sql.SQLException: I/O Error: GSS Failed: Invalid name provided (Mechanism level: Cannot locate default realm)
    at net.sourceforge.jtds.jdbc.TdsCore.login(TdsCore.java:654)
    at net.sourceforge.jtds.jdbc.JtdsConnection.<init>(JtdsConnection.java:371)
    at net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:184)
    at java.sql.DriverManager.getConnection(DriverManager.java:571)
    at java.sql.DriverManager.getConnection(DriverManager.java:233)
    at sql.generator.SQLGenerator.main(SQLGenerator.java:80)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)
Caused by: java.io.IOException: GSS Failed: Invalid name provided (Mechanism level: Cannot locate default realm)
    at net.sourceforge.jtds.jdbc.TdsCore.sendMSLoginPkt(TdsCore.java:1976)
    at net.sourceforge.jtds.jdbc.TdsCore.login(TdsCore.java:617)
    ... 10 more

对Google的研究表明,这可能是一个Kerberos问题,我以前没有处理过这个问题,但我不确定这是正确的。我需要在应用程序中复制的db浏览器在做什么?

蒂娅,亚历克斯

EN

回答 1

Stack Overflow用户

发布于 2015-10-05 00:02:33

这也咬了我一口。检查您的DriverManager.getConnection调用。我一直在使用变量,它接受一个属性作为第二个参数。但jTDS并不像M$驱动程序那样使用它。您必须将变量与URL、用户名和密码参数一起使用。确保将端口号和(可选)数据库名称添加到连接URL。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31796156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档