MySQL JDBC auf Linux Server zu mySQL DB auf anderem Linux Server wirft Access denied

Thallius

Top Contributor
Hi,

Ich habe einen Amazon Cloud Linux Server mit Redhat7, und java 1.8.0_191-b12 (Ja ich weiß alt aber von der globalen IT vorgegeben und nicht verhandelbar) als Application Server.
Weiterhin habe ich einen Amazon Cloud mySQL Server mit mySQL 5.7. Weitere Konfiguration ist unbekannt.

Auf meinem Application Server habe ich weiterhin Apache2.4 und PHP5.6 installiert. Wenn ich nun mit einem PHP Script auf die mySQL DB zugreife, funktioniert das wunderbar. Ports scheinen also alle entsprechend geöffnet.

Nun habe ich eine ganz normale Java Client Application auf dem Applikation Server installiert und versuche in dieser auf die gleiche mySQL DB zuzugreifen. Das klappt leider nicht.

Der Fehler ist eine Exception beim Connect

Access denied for user@ip using password = "YES"

Der Code ist eigentlich totaler Standard:

Code:
Class.forName("com.mysql.jdbc.Driver").newInstance();
conn = DriverManager.getConnection("jdbc:mysql://dburl:3306/dbname?zeroDateTimeBehavior=convertToNull&autoReconnect=true&useSSL=false","username", "password");

Wenn ich die die lokale mySQL DB auf dem Applikation Server anspreche funktioniert das wunderbar.

Hat irgendjemand schonmal so ein Problem gehabt oder hat irgendwer eine Idee wie ich da weiter voran komme?

Danke

Claus
 
Daten sind in PHP und Java-Code alle identisch?

Treiber ist in der neusten/einer passenden Version für 5.7 vorhanden? (Class.forName("com.mysql.jdbc.Driver").newInstance(); sollte zumindest nicht mehr nötig sein und in der aktuellen Version auch ne Warnung werfen)

Die IP in der Fehlermeldung ist auch die richtige IP?
 
Ich habe gerade mal weiter getestet:

Wenn ich versuche die DB mit

mysql -uusername -hservername -Pport -Ddbname

versuche anzusprechen bekomme ich schon vor der Frage nach dem Passwort den gleichen Access denied error.
Es scheint also wohl irgendwie möglich zu sein den mySQL server so zu konfigurieren, dass er einen Unterschied erkennt ob ich mit PHP auf ihn zugreife oder mit was anderem.

Allerdings habe ich da keine Idee was das sein könnte. Normalerweise sollte man doch meinen, da kommt beim Server genau die gleiche Anfrage an von der gleichen IP mit den gleichen Credentials. Wie will der das unterscheiden?

Gruß

Claus
 
Ist dein Java und dein Php Server der selbe? Man kann in MySql den Zugriff auf einzelne Server einschränken. D.h. der Php Server darf zugreifen, der Java Server nicht.
 
Kann es sein, dass die IP Adresse nicht die selbe ist?
MySQL ist standardmäßig so konfiguriert, dass es nur Zugriffe von localhost zulässt. Dies ist bei PHP meist der Fall, da PHP meist auf dem selben Server läuft. Deine Java Applikation wird vermutlich auf einem anderen Server laufen --> andere IP --> wird per Default geblockt.
Dann musst du bei dem User den Host "%" eintragen, der für alle IP Adressen steht oder du gibst die konkrete IP Adresse an.
 

Zurück
Oben