Tomcat 5.5 + MySQL pod Debianem i uprawnienia
: 17 stycznia 2009, 16:49
Po pierwsze, witam wszystkich, to mój pierwszy post na tym forum 
Jak sądzę, być może zadaje to pytanie na nie tym forum co trzeba niemniej problem mam dość dziwny i odnoszę wrażenie, że to jednak jest w jakimś stopniu kwestia systemu.
Mam aplikację Webową (servlet) działającą na tomkacie 5.5 i Mysql 5.0 wszystko postawione na vpsie.
Próbuję podłączyć do bazy danych, jeśli robię to z domu (Windows) wszystko działa poprawnie, jeśli z poziomu ,,servletu'' (ten sam komputer co MySQL) dostaje taki wyjątek:
I tu moje pytanie, którego?
Czy jest możliwe, że są jakieś pliki "ukryte" poza tą listą?
Dotychczas wypróbowałem:
my.cnf zawiera linijki:
Nie mam pomysłu co robić dalej i trochę mnie załamka bierze, jeśli macie jakikolwiek pomysł, to proszę o pomoc.
Pozdrawiam
Adam
[ Dodano: 2009-01-18, 10:16 ]
Witam wszystkich ponownie
Dwa dni nad tym problemem siedziałem zanim tu napisałem i nie mogłem wpaść na rozwiązanie, po napisaniu rozwiązanie znalazłem w kilka godzin ;-)
W sumie okazało się, że problem nie ma związku z Debianem. Niemniej być może komuś się przyda rozwiązanie, więc je tu zamieszczę.
Istotą problemu jest fakt, że nie wystarczy uprawnić webaplikacji do połączeń na dany IP i port
lecz trzeba również to zrobić ze sterownikiem używanym przez aplikację
tak więc w pliku 04webapps.policy trzeba umieścić dwie sekcje:
ta odpowiada za uprawnienia dla sterownika jdbc
ta za uprawnienia dla aplikacji
Pozdrawiam
Adam

Jak sądzę, być może zadaje to pytanie na nie tym forum co trzeba niemniej problem mam dość dziwny i odnoszę wrażenie, że to jednak jest w jakimś stopniu kwestia systemu.
Mam aplikację Webową (servlet) działającą na tomkacie 5.5 i Mysql 5.0 wszystko postawione na vpsie.
Próbuję podłączyć do bazy danych, jeśli robię to z domu (Windows) wszystko działa poprawnie, jeśli z poziomu ,,servletu'' (ten sam komputer co MySQL) dostaje taki wyjątek:
Google generalnie podpowiada, że mam wpisać coś w stylu:java.net.SocketException
MESSAGE: java.security.AccessControlException: access denied (java.net.SocketPermission 127.0.0.1:5725 connect,resolve)
STACKTRACE:
java.net.SocketException: java.security.AccessControlException: access denied (java.net.SocketPermission 127.0.0.1:5725 connect,resolve)
at com.mysql.jdbc.StandardSocketFactory.unwrapExceptionToProperClassAndThrowIt(StandardSocketFactory.java:407)
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:268)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:271)
at com.mysql.jdbc.Connection.createNewIO(Connection.java:2771)
at com.mysql.jdbc.Connection.<init>(Connection.java:1555)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285)
at java.sql.DriverManager.getConnection(DriverManager.java:525)
at java.sql.DriverManager.getConnection(DriverManager.java:171)
do pliku .policy.permission java.net.SocketPermissin "127.0.0.1:5725", "connect,resolve,listen,accept";
I tu moje pytanie, którego?
Kod: Zaznacz cały
find / -name "*.policy" zwraca
/usr/lib/jvm/java-1.5.0-sun-1.5.0.16/jre/lib/security/java.policy
/usr/lib/jvm/java-1.5.0-sun-1.5.0.16/jre/lib/security/javaws.policy
/etc/tomcat5.5/policy.d/50user.policy
/etc/tomcat5.5/policy.d/04webapps.policy
/etc/tomcat5.5/policy.d/03catalina.policy
/etc/tomcat5.5/policy.d/01system.policy
/etc/tomcat5.5/policy.d/02debian.policy
/etc/java-1.5.0-sun/security/java.policy
/var/lib/tomcat5.5/conf/catalina.policy
Dotychczas wypróbowałem:
Bez skutku./etc/tomcat5.5/policy.d/04webapps.policy
/var/lib/tomcat5.5/conf/catalina.policy
/etc/java-1.5.0-sun/security/java.policy
my.cnf zawiera linijki:
Inne linijki chyba nie są istotne w tym kontekście (jak są to powiedzcie proszę, które to wkleję).[client]
port = 5725
socket = /var/run/mysqld/mysqld.sock
[mysqld]
#
# * Basic Settings
#
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 5725
#bind-address = 127.0.0.1 //tej opcji próbowałem z # i bez
Nie mam pomysłu co robić dalej i trochę mnie załamka bierze, jeśli macie jakikolwiek pomysł, to proszę o pomoc.
Pozdrawiam
Adam
[ Dodano: 2009-01-18, 10:16 ]
Witam wszystkich ponownie
Dwa dni nad tym problemem siedziałem zanim tu napisałem i nie mogłem wpaść na rozwiązanie, po napisaniu rozwiązanie znalazłem w kilka godzin ;-)
W sumie okazało się, że problem nie ma związku z Debianem. Niemniej być może komuś się przyda rozwiązanie, więc je tu zamieszczę.
Istotą problemu jest fakt, że nie wystarczy uprawnić webaplikacji do połączeń na dany IP i port
lecz trzeba również to zrobić ze sterownikiem używanym przez aplikację
tak więc w pliku 04webapps.policy trzeba umieścić dwie sekcje:
ta odpowiada za uprawnienia dla sterownika jdbc
Kod: Zaznacz cały
grant codeBase "jar:file:/var/lib/tomcat5.5/webapps/moj2/WEB-INF/lib/mysql-connector-java-5.0.8.jar!/-" {
permission java.net.SocketPermission "127.0.0.1:3306", "resolve,listen,accept,connect";
permission java.security.AllPermission ;
};
Kod: Zaznacz cały
grant codeBase "file:/var/lib/tomcat5.5/webapps/moj2/-" {
permission java.net.SocketPermission "127.0.0.1:3306", "resolve,connect,listen,accept";
permission java.security.AllPermission;
};
Pozdrawiam
Adam