Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Die Tomcat/Hibernate-Verbindung zu MySql schlägt fehl, da die Kommunikationsverbindung fehlgeschlagen ist und die Berechtigung verweigert wurde

Ich bin diesem Problem gerade auch auf die Spur gekommen. Meine Symptome waren genau die gleichen wie deine und ich habe sogar genau die Dinge ausprobiert, die du versucht hast. Zusammenfassend ist mein Problem nur aufgetreten, weil ich Tomcat auf Centos mit SELinux verwendet habe.

Einige Leute halfen mir bei der Diagnose mit den folgenden Befehlen, um Sicherheitsereignisse zu untersuchen und warum einige Aktionen nicht zulässig waren:

sudo ausearch -m avc
sudo grep "tcp_socket" /var/log/audit/audit.log | audit2why // translates log into some human readable reasons why the audit record was generated

Ich habe Einträge gesehen wie:

Und dann diesen Artikel über Tomcat und SELinux gefunden https://noobient.com/post/165972214381/selinux-woes-with-tomcat-on-centos-74

Sie können den folgenden Befehl ausführen, um zu sehen, ob Tomcat im Sicherheitskontext tomcat_t ausgeführt wird.

$ps auxZ | grep tomcat

Um wirklich festzustellen, ob mein Fehler SELinux war, habe ich SELinux deaktiviert

$ sestatus // shows: SELinux status:                 enabled
$ sudo vim /etc/selinux/config // set "SELINUX=disabled"
$ sudo shutdown -r now
$ sestatus // shows: SELinux status:                 disabled

startete meinen Rechner neu und sah, dass Tomcat jetzt die ausgehende Verbindung herstellte.

Toll, jetzt weiß ich wenigstens WARUM das passiert ist. Wenn Sie SELinux benötigen, ist das Deaktivieren natürlich KEINE Lösung. Eine andere Problemumgehung, die wahrscheinlich keine Lösung ist, besteht darin, Tomcat zu installieren, ohne yum zu durchlaufen. Yum installiert Tomcat unter Verwendung des Sicherheitskontexts.

Ich denke, die Vorgehensweise besteht jetzt darin, den Sicherheitskontext oder das Regelwerk für Tomcat zu ändern, damit es ausgehende Verbindungen herstellen kann.