Teradata DBC用户无法登录求助(LDAP自动配置后)
问题描述
已完成Teradata与LDAP的对接配置,手动映射的LDAP用户可通过Teradata Studio以LDAP认证成功登录。但配置自动预配目录用户时,执行dbscontrol m g 81 T并重启PDA后,DBC用户无法通过Teradata Viewpoint或JDBC登录,报错:
java.sql.SQLException: [Teradata Database] [TeraJDBC 17.10.00.14] [Error 8017] [SQLState 28000] The UserId, Password or Account is invalid. at com.teradata.jdbc.jdbc_4.util.ErrorFactory.makeDatabaseSQLException(ErrorFactory.java:302) at com.teradata.jdbc.jdbc.GenericLogonController.run(GenericLogonController.java:495) at com.teradata.jdbc.jdbc.GenericTeradataConnection.<init>(GenericTeradataConnection.java:294) at com.teradata.jdbc.jdbc_4.TDSession.<init>(TDSession.java:186) at com.teradata.jdbc.jdk6.JDK6_SQL_Connection.<init>(JDK6_SQL_Connection.java:36) at com.teradata.jdbc.jdk6.JDK6ConnectionFactory.constructSQLConnection(JDK6ConnectionFactory.java:25) at com.teradata.jdbc.jdbc.ConnectionFactory.createConnection(ConnectionFactory.java:181) at com.teradata.jdbc.jdbc.ConnectionFactory.createConnection(ConnectionFactory.java:171) at com.teradata.jdbc.TeraDriver.doConnect(TeraDriver.java:230)
已确认DBC密码未过期、账户未锁定,且可通过BTEQ正常登录,但Viewpoint/JDBC登录失败。
排查与解决步骤
1. 检查连接的认证机制配置
- JDBC连接:查看JDBC URL是否添加了
LOGMECH=LDAP参数。若开启自动预配后强制LDAP认证,但DBC并非LDAP用户,需将参数改为LOGMECH=TD2(Teradata原生认证),示例URL:jdbc:teradata://<TERADATA_HOST>/DATABASE=<DB_NAME>,LOGMECH=TD2 - Teradata Viewpoint:进入Viewpoint的连接管理页面,检查对应Teradata连接的「认证类型」是否设置为「Teradata」而非「LDAP」,修改后重新测试登录。
2. 验证dbscontrol参数81的状态
通过BTEQ登录DBC后,执行以下命令确认参数状态:
dbscontrol show 81;
若参数值为T(启用自动预配),可临时将其改回F以恢复DBC的原生认证登录:
dbscontrol m g 81 F;
执行后重启PDA服务,再尝试通过JDBC/Viewpoint登录DBC。
3. 确认DBC用户的认证类型
执行以下SQL查询DBC用户的认证类型:
SELECT UserName, AuthType FROM DBC.Users WHERE UserName = 'DBC';
AuthType = 0:表示原生数据库认证(正常状态)AuthType = 1:表示LDAP认证(异常,需通过ALTER USER DBC AS AUTHENTICATION=PASSWORD;改回原生认证)
4. 修正LDAP自动预配的配置
重新配置自动预配时,需确保:
- 目录映射规则未将DBC用户纳入LDAP认证范围
- 配置允许本地用户(如DBC)使用原生认证登录,避免强制所有用户走LDAP
内容的提问来源于stack exchange,提问作者Ahmad786
相关产品推荐
相关产品推荐

