Connexion DB2 Autorisation Faliure s'est Produite Raison: Mécanisme de Sécurité de la non prise en charge par Java
Je suis en train de configurer la connexion DB2 avec DB2JDBC Type4 pilotes. Mais j'obtiens cette erreur.
Exception in thread "main"
com.ibm.db2.ccc.am.SqlInvalidAuthorizationSpecException:
[ccc][t4][201][11237][3.64.104] Connexion échec de l'autorisation de
eu lieu. Raison: mécanisme de Sécurité n'est pas supporté. ERRORCODE=-4214,
SQLSTATE=28000
Mon code est
public Connection getConnection() throws ClassNotFoundException, InstantiationException,
IllegalAccessException, SQLException{
Driver driver = (Driver) Class.forName ( "com.ibm.db2.jcc.DB2Driver" ).newInstance();
DriverManager.registerDriver(driver);
Connection connection = DriverManager.getConnection("jdbc:db2://hostname:portnumber
/DBName", "username","password" );
System.out.println( "From DAO, connection obtained " );
return connection;
}
Exception du journal:
Exception in thread "main" com.ibm.db2.jcc.am.SqlInvalidAuthorizationSpecException:
[jcc][t4][201][11237][3.64.104] Connection authorization failure occurred.
Reason: Security mechanism not supported. ERRORCODE=-4214, SQLSTATE=28000
at com.ibm.db2.jcc.am.bd.a(bd.java:677)
at com.ibm.db2.jcc.am.bd.a(bd.java:60)
at com.ibm.db2.jcc.am.bd.a(bd.java:120)
at com.ibm.db2.jcc.t4.b.f(b.java:2389)
at com.ibm.db2.jcc.t4.b.a(b.java:1712)
at com.ibm.db2.jcc.t4.y.b(y.java:3612)
at com.ibm.db2.jcc.t4.y.a(y.java:477)
at com.ibm.db2.jcc.t4.y.a(y.java:117)
at com.ibm.db2.jcc.t4.b.c(b.java:1350)
at com.ibm.db2.jcc.t4.b.b(b.java:1221)
at com.ibm.db2.jcc.t4.b.b(b.java:788)
at com.ibm.db2.jcc.t4.b.a(b.java:760)
at com.ibm.db2.jcc.t4.b.a(b.java:421)
at com.ibm.db2.jcc.t4.b.a(b.java:396)
at com.ibm.db2.jcc.t4.b.<init>(b.java:334)
at com.ibm.db2.jcc.DB2SimpleDataSource.getConnection(DB2SimpleDataSource.java:232)
at com.ibm.db2.jcc.DB2SimpleDataSource.getConnection(DB2SimpleDataSource.java:198)
at com.ibm.db2.jcc.DB2Driver.connect(DB2Driver.java:475)
at com.ibm.db2.jcc.DB2Driver.connect(DB2Driver.java:116)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
at com.test.connection.DB2ConnectionFactory.getConnection(DB2ConnectionFactory.java:19
at com.test.connection.ConnectionTest.main(ConnectionTest.java:18)
J'ai aussi essayé ces mécanismes pris en charge par IBM Data Server pour JDBC et SQLJ
-CLIENT
-SERVER
-SERVER_ENCRYPT
-DATA_ENCRYPT
-KERBEROS
-GSSPLUGIN
-KRB_SERVER_ENCRYPT
-GSS_SERVER_ENCRYPT
Afin d'éviter le problème de chiffrement, nous avons déployé cette application pour linux. DONC, en cas de besoin de connexion sécurisée, mais toujours la même erreur se produit.
Je suis à l'aide de JDBC DB2 version du Pilote v10.1fp1_jdbc_sqlj
, et j'ai aussi essayé de 9.5
et 9.1
et db2jcc4.jar
fichier à cet effet.
J'ai aussi essayé en utilisant type 2
pilotes, mais je suis ClassNotFound d'erreur dans ce cas COM.ibm.db2.jdbc.app.DB2Driver
. la classe n'est pas trouvé.
Mais rien n'a fonctionné jusqu'à présent. Toute aide est appréciée. Je suis aux prises avec ce problème plus d'une semaine.
OriginalL'auteur Sunny Kaushul | 2013-05-23
Vous devez vous connecter pour publier un commentaire.
Ça fonctionne maintenant. Le problème était avec DB2. Vous devez vous assurer que vos variables d'environnement point sur les dossiers appropriés. Donc, assurez-vous de faire les suivants:
JDBC Type 2
pilotes. Ne pas aller pourType 4
, sauf si demandé par votre DBA.Vous aidera à vous assurer que votre code sera en mesure d'interagir avec Windows Pilotes JDBC
LIB
aidera votre code pour lire les bonnes librairies. j'.eCOM.ibm.db2.jdbc.app.DB2Driver
ClassPath:
N'oubliez pas d'accepter le travail de réponse, même si c'est votre propre.
OriginalL'auteur Sunny Kaushul
De Type 2 pilote est utilisé lorsque vous avez le serveur de Données client installé dans votre machine. Si vous exécutez le serveur DB2 dans le même ordinateur client, vous pouvez vous Type 2 serveur.
Essayez d'utiliser le serveur de données client, afin de catalogue de la base de données distante dans votre machine locale, et essayez d'établir une connexion via "db2 connect pour DBName"
Si vous pouvez établir la connexion, vous pouvez faire la même chose en Java. Si vous ne pouvez pas, vous pouvez chanqe la catalogation des options, jusqu'à trouvé le bon. Une fois que vous avez fait cela, vous pouvez vous connecter à la base de données distante.
Exception in thread "main" com.ibm.db2.ccc.am.SqlException: [ccc][4038][12241][3.57.82] T2LUW exception: SQL1092N "UserID" n'a pas l'autorité pour exécuter la commande demandée ou de l'exploitation. ERRORCODE=-1092, SQLSTATE=
Avez-vous établi une connexion à la base de données en dehors de Java? avec le même nom d'utilisateur et mot de passe. Probablement, il y a une erreur de configuration dans la base de données, je veux dire, il y a une méthode d'authentification qui ne correspond pas à la mise en œuvre actuelle.
oui, j'ai configuré la connexion à l'aide d'un client DB2 l'assistant de Configuration, j'ai choisi un chiffrer les données d'authentification et de travail. Mais lorsque je sélectionne USER_PASSWORD_AND_DATA_ENCRYPTION. son throwinf m'erreur
Bien sûr, Le problème a été jdbc.dll le fichier n'a pas été dans la variable PATH. J'ai donc défini les variables système suivantes PATH=C:\Program Files\IBM\SQLLIB\BIN\db2jdbc.dll, cela vous aide à vous assurer que votre code sera en mesure d'interagir avec Windows Pilotes JDBC LIB=;C:\PROGRA~1\IBM\SQLLIB\LIB LIB aidera votre code pour lire les bonnes librairies. j'.e (COM.ibm.db2.jdbc.app.DB2Driver)
OriginalL'auteur AngocA
Quelle méthode d'authentification est configuré sur le serveur? Est de coutume plugin d'authentification utilisé? Vous pouvez obtenir cette information en cours d'exécution
db2 get dbm cfg
sur le serveur de base de données.Dans le Client DB2 je suis en cliquant sur l'option DATA_ENCRYPT dans la section de la sécurité et de travail
Mais pas de travail par le biais d'une application Java. DBA m'a dit de choisir ENCRYPTED_USER_PASSOWRD, mais ne fonctionne pas!!!!
OriginalL'auteur mustaccio