Mysql
 sql >> Base de données >  >> RDS >> Mysql

La connexion Tomcat/Hibernate à MySql échoue avec l'échec du lien de communication et l'autorisation refusée

Je viens également de suivre ce problème. Mes symptômes étaient exactement les mêmes que les vôtres et j'ai même essayé les choses exactes que vous avez essayées. En résumé, mon problème n'est survenu que parce que j'utilisais tomcat sur centos avec SELinux.

Certaines personnes m'ont aidé à diagnostiquer en utilisant les commandes suivantes pour examiner les événements de sécurité et pourquoi certaines actions n'étaient pas autorisées :

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

J'ai vu des entrées comme :

Et puis j'ai trouvé cet article sur tomcat et SELinux https ://noobient.com/post/165972214381/selinux-woes-with-tomcat-on-centos-74

Vous pouvez exécuter la commande suivante pour voir si tomcat s'exécute dans le contexte de sécurité tomcat_t.

$ps auxZ | grep tomcat

Afin de vraiment déterminer si mon erreur était SELinux, j'ai désactivé SELinux

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

redémarré ma machine et j'ai vu que tomcat établissait maintenant la connexion sortante.

Génial, maintenant je sais au moins POURQUOI cela se produisait. Bien sûr, si vous avez besoin de SELinux, le désactiver n'est PAS une solution. Une autre solution de contournement qui n'est probablement pas une solution consiste à installer tomcat sans passer par yum. Yum installera Tomcat en utilisant le contexte de sécurité.

Je pense que la ligne de conduite consiste maintenant à modifier le contexte de sécurité ou l'ensemble de règles régissant tomcat pour lui permettre d'établir des connexions sortantes.