MySQL-JDBC: Communications Link Failure
Cannot connect to database server Communications link failure The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:513) at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
Mysql sunucusunda JDBC uzerinden erismeye calistiginizda eger yukaridaki exception i aliyorsaniz, ayni veya uzak sunucu uzerinde calisan MySQL sunucusuna erisim ile ilgili genel bir probleminiz var diyebiliriz. Bu problemin sebebi eristiginiz MySQL sunucunun yapilandirilmasi, JDBC baglantisi icin cagirdiginiz DriverManager.getConnection(url, userName, password) fonksiyonun parametreleri veya aranızdaki IP elemanları ile ilgilidir. Bu hata mesajinin giderilmesi icin izlenebilecek cozum yollarindan bazilarini listelersek;
"bind-address"Yeni kurulan MySQL sunucusunda varsayilan "bind-address" degeri guvenlik gerekcesi ile yerel loopback adresi olan 127.0.0.1 olarak atanmistir. Eger /etc/mysql/my.conf dosyasinizda bind-address = 127.0.0.1 olarak goruyorsaniz bu MySQL sunucusuna sadece bu sunucu uzerinde kosan uygulamanizla baglanabilirsiniz. Bu satirin basina # koyarak sunucu baslatilirken gozardi edilmesini saglayin.
# bind-address = 127.0.0.1 # gozardi edin
Bu sayede MySQL in uzak sunuclarin IP4 Ip ve port adresleri ile baglanmalarina eger kullaniciniya geldigi IP icin yetki verilmisse izin verecektir. Eger sunucunun sabit IP adresi var ise yerel loopback adresini yerine onu yazmak da cozum olacaktir. Ayrica baglanmaya calistiginiz kullanicinin geldigi IP adresinden MySQL sunucuya erisim yetkisi verilip verilmedigine de bakmak iyi olacaktir.
mysql> GRANT ALL PRIVILEGES ON *.* TO alice@'%' IDENTIFIED BY “alice_password”;
1. user@% . kullanicinin hangi IP den geldigine bakmaksizin erisim icin yetkilendirilecektir.
2. user@192.168.0.% Eger DHCP den dinamik IP adresi aliyorsaniz default gateway IP adresinden alacaginiz ilk 3 blokla dinamik IP adresinizle baglanabilirsiniz.
Eger bu yapilandirma satiri /etc/mysql/my.conf dosyasinda gozardi edilmemis olarak duruyorsa , mysql sunucusunun TCP/IP baglantisi uzerinden gelen baglanti isteklerini dinlemesi tamamen kapatilmis demektir. Bu durumda sadece pipe,shared memory ve socket uzerinden sunucu ile istemci uygulamalar baglanti kurabilir. Sadece yerel agdan olacak baglantilar icin kullanilmalidir.Bu yapilandirma ayarini sadece yerel agdan ve belirtilen yontemlerle baglantı salanacaksa kullanin. Aksti takdirde # ile gozardi edildiginden emin olun.
No comments :
Post a Comment