Portál AbcLinuxu, 8. května 2025 17:38

Dotaz: Netbeans, MySQL Connector/J

4.10.2009 23:46 Martin Michalek
Netbeans, MySQL Connector/J
Přečteno: 1311×
Odpovědět | Admin

Dobry den,

chci si v netbeans nakonfigurovat pripojeni k lokalni mysql databazi. Zapnu tedy mysqld daemona. Nyni si v phpmyadmin mohu prohlizet obsah databaze - to znamena, ze deamon bezi ok.

Pote spustim Netbeans, vlevo rozklinu services - Databases - drivers - Mysql (Connector/J driver) - connect using. Zde vyplnim localhost, 3306, jmeno databaze a prihlasovaci udaje, dam ok a zobrazi se mi tato hlaska:

http://img297.imageshack.us/img297/8730/netbeans.png

Nevite prosim co muze byt spatne?

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

5.10.2009 09:48 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Netbeans, MySQL Connector/J
Odpovědět | | Sbalit | Link | Blokovat | Admin
Podívejte se do logů MySQL serveru, zda tam není nějaká zpráva – a také možná něco bude v konzoli NetBeans.
5.10.2009 10:06 Martin Michalek
Rozbalit Rozbalit vše Re: Netbeans, MySQL Connector/J

Nejak nemohu najit mysqld lof, ve /var/log neni...

Konzole netbeans zustane cista.

Timto prikazem se mohu pripojit v pohode: $ mysql -p -P 3306 -u root -h localhost

Zkusil jsem program, kde se pripojim "rucne":

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;

public class Main {

public static void main(String[] args) {
    try {
        Statement stmt;
        Class.forName("com.mysql.jdbc.Driver");
        String url = "jdbc:mysql://localhost:3306/iis";
        Connection con = DriverManager.getConnection(url, "root", "heslo0");
        System.out.println("URL: " + url);
        System.out.println("Connection: " + con.getCatalog());
        stmt = con.createStatement();
    } catch(Exception se)
    {
        se.printStackTrace();
    }
}
}

Ale ten pri kompilaci hodi

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
        at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:169)
        at javaapplication62.Main.main(Main.java:15)
5.10.2009 10:17 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Netbeans, MySQL Connector/J
Ta chyba znamená, že nemáte potřebnou knihovnu (JDBC ovladač k MySQL) na classpath.
5.10.2009 10:57 Martin Michalek
Rozbalit Rozbalit vše Re: Netbeans, MySQL Connector/J

Ok a ktera z techto knihoven to prosim je?

/usr/share/netbeans/ide11/modules/org-netbeans-modules-db-mysql.jar
/usr/share/netbeans/ide11/modules/ext/mysql-connector-java-5.1.6-bin.jar
/usr/share/netbeans/ide11/modules/locale/org-netbeans-modules-db-mysql_ja.jar
/usr/share/netbeans/ide11/modules/locale/org-netbeans-modules-db-mysql_pt_BR.jar
/usr/share/netbeans/ide11/modules/locale/org-netbeans-modules-db-mysql_zh_CN.jar
/usr/share/netbeans/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/jdbc-mysql-5.0.4/lib/mysql-connector-java-5.0.4-bin.jar
5.10.2009 11:04 Martin Michalek
Rozbalit Rozbalit vše Re: Netbeans, MySQL Connector/J

Tak jsem nasel, ze je to ta druha, nyni to hazi tuto chybu:

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

Last packet sent to the server was 0 ms ago.
        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:406)
        at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1074)
        at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2103)
        at com.mysql.jdbc.ConnectionImpl.init(ConnectionImpl.java:718)
        at com.mysql.jdbc.JDBC4Connection.init(JDBC4Connection.java:46)
        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:406)
        at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:302)
        at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:282)
        at java.sql.DriverManager.getConnection(DriverManager.java:582)
        at java.sql.DriverManager.getConnection(DriverManager.java:185)
        at javaapplication62.Main.main(Main.java:19)
Caused by: java.net.ConnectException: Connection refused
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
        at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
        at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
        at java.net.Socket.connect(Socket.java:525)
        at java.net.Socket.connect(Socket.java:475)
        at java.net.Socket.init(Socket.java:372)
        at java.net.Socket.init(Socket.java:215)
        at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:253)
        at com.mysql.jdbc.MysqlIO.init(MysqlIO.java:280)
        at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2026)
        ... 12 more
5.10.2009 11:25 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Netbeans, MySQL Connector/J
Problém je v navázání TCp/IP spojení. Buď máte špatně adresu, blokujete přístup na firewallu, nebo by ještě mohl být problém s IPv4 a IPv6. Psal jste, že přihlášení z řádkového klienta (mysql) funguje – to zkoušíte na stejném počítači, kde spouštíte i tu Javovskou aplikaci?
5.10.2009 11:32 Martin Michalek
Rozbalit Rozbalit vše Re: Netbeans, MySQL Connector/J

Ano, vsechno zkousim lokalne na mem notebooku. FW by tedy za tim stat nemel.

5.10.2009 12:31 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Netbeans, MySQL Connector/J
Mohl by to ovlivňovat firewall na notebooku, ale jestli vám funguje připojení přes řádkový mysql, měl byste se na stejnou adresu připojit i z Javy. Máte na počítači zprovozněné IPv6? Napadá mne už jenom varianta, že mysqld naslouchá jen na IPv4 a mysql se připojuje také k němu, ale Java zkouší IPv6. Zkuste tomu javovskému programu při startu nastavit systémovou vlastnost java.net.preferIPv4Stack=true.
5.10.2009 12:38 Martin Michalek
Rozbalit Rozbalit vše Re: Netbeans, MySQL Connector/J

Kde tu vlastnost prosim nastavim? Je to v project properties -> run -> Arguments nebo VM Options?

5.10.2009 12:50 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Netbeans, MySQL Connector/J
VM Options, nastavení systémových vlastností je přes přepínač -D, tedy -Djava.net.preferIPv4Stack=true.
5.10.2009 14:57 Martin Michalek
Rozbalit Rozbalit vše Re: Netbeans, MySQL Connector/J

Ano, presne tak to mam a stale stejna chyba. Btw, proc myslite, ze se to muze tykat IPv6?

5.10.2009 16:10 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Netbeans, MySQL Connector/J
Podle té chyby se nedaří navázat TCP/IP spojení s databází. Pokud připojení přes mysql funguje a z Javy ne, a je stejná adresa, na kterou se připojujete, počítač, ze kterého se připojujete, uživatel, pod kterým to zkoušíte, nezbývá už moc věcí, v čem se to může lišit. Napadlo mne, že se mysql může připojovat přes IPv4 a Java může zkoušet IPv6. Ještě mne napadá, zda nemáte na počítači SElinux a není v něm nastavené nějaké pravidlo, že na příslušný port se může připojit jen mysql. Také bych vyzkoušel místo localhost:3306 použít IP adresu – 127.0.0.1:3306.
5.10.2009 16:20 Martin Michalek
Rozbalit Rozbalit vše Re: Netbeans, MySQL Connector/J

SELinux nemam, pouzivam obycejny Arch Linux. Zadani IP misto domeny nepomohlo. Co je ale podezrele je toto:

$ sudo /etc/rc.d/mysqld start
::Starting MySQL                 [DONE]
$ nmap -p 3306 l

Starting Nmap 5.00 ( http://nmap.org ) at 2009-10-05 16:18 CEST
Interesting ports on localhost (127.0.0.1):
PORT     STATE  SERVICE
3306/tcp closed mysql

Nmap done: 1 IP address (1 host up) scanned in 0.18 seconds
$ netstat -lna | grep mysql
unix  2      [ ACC ]     STREAM     LISTENING     7180088 /tmp/mysql.sock

Daemon se spusti, pritom na dany port se jevi zavreny a v nestatu take neni videt. Pres mysql klienta se ale k DB mohu pripojit.

5.10.2009 16:50 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Netbeans, MySQL Connector/J
Tohle mne taky napadlo, ale podle parametrů jsem si myslel, že se mysql připojuje přes TCP/IP. Pravděpodobně se ale připojuje přes unix socket, ale java se umí připojit jen přes TCP/IP. Nemáte v konfiguráku MySQL zapnuté skip-networking?
5.10.2009 17:35 Martin Michalek
Rozbalit Rozbalit vše Re: Netbeans, MySQL Connector/J

Ano, skip-networking bylo zapnute. Vypnul jsem ho a uz vidim mysqld na 3306. Problem ale je, ze to muj problem nevyresilo, porad to same:(

5.10.2009 20:14 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Netbeans, MySQL Connector/J
I ten samý výpis? Není teď spíš problém v tom, že nemáte v MySQL nastavená potřebná práva, aby se uživatel root mohl k databázi připojit z localhosta přes TCP/IP? Nejsem si jist, možná vypadá povolení práv pro lokální přihlášení přes TCP/IP i unix socket stejně, ale zkuste se na ta práva podívat. Případně zkuste mysql ještě jednou a přidejte parametr --protocol=TCP, abyste i tu konzolovou utilitu zkoušel přes TCP/IP spojení.
5.10.2009 20:51 Martin Michalek
Rozbalit Rozbalit vše Re: Netbeans, MySQL Connector/J

Ano, vypada to, ze mate pravdu, s tim parametrem se nemuzu pripojit ani na localhost, pise to

ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0

Kde prosim nastavim ta potrebna prava?

5.10.2009 21:12 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Netbeans, MySQL Connector/J
Ta práva se nastavují v tabulce Host v databázi mysql, pak ještě musíte přes administraci (třeba mysqladmin) vynutit znovunačtení práv – ale raději se na to podívejte do dokumentace (Access Control, Stage 1: Connection Verification, Access Control, Stage 2: Request Verification), já když se jednou za uherský rok dostanu k MySQL, tak musím práva stejně pokaždé znovu hledat v dokumentaci.

Jinak ale myslím, že se pořád nenaváže TCP/IP spojení, pravděpodobně máte přístup zakázaný na firewallu. Dejte sem kdyžtak výpis
iptables --line-numbers -nL INPUT
případně zkuste přidat pravidlo povolující přístup k MySQL z localhosta:
iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -p tcp --dport 3306 -j ACCEPT
5.10.2009 21:29 Martin Michalek
Rozbalit Rozbalit vše Re: Netbeans, MySQL Connector/J

Eh, proc je to tak slozite...? Ja bych cekal ze root bude moci vsechno, tedy mozna ne uplne vse, ale pripojeni k vlastnimu pocitaci bych do toho zahrnul.

Asi budu muset prostudovat tu dokumentaci:/

5.10.2009 21:39 Martin Michalek
Rozbalit Rozbalit vše Re: Netbeans, MySQL Connector/J

Dival jsem se do tabulky Host a ta je na localhostu prazdna. Pripojil jsem se tedy na server, kde bezi debian a tam se s rootem muzu na lokalni (na serveru) db pripojit i s tim parametrem s TCP. Dival jsem se proto i tam do tabulky Host, ale i tam je prazdna, jakto?

5.10.2009 21:46 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Netbeans, MySQL Connector/J
Nevím, možná se to dá ovlivnit ještě nějakou konfigurační volbou – jak už jsem psal, sám pokaždé s nastavováním práv MySQL zápasím. Myslím ale, že do fáze ověřování práv se to ještě nedostalo, že je pořád ještě problém vůbec s navázáním spojení, tedy nejspíš s nastavením firewallu.
5.10.2009 21:57 Martin Michalek
Rozbalit Rozbalit vše Re: Netbeans, MySQL Connector/J

No firewall uz jsem nastavil, ale stale...

$ sudo iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -p tcp --dport 3306 -j ACCEPT
$ sudo iptables --line-numbers -nL INPUT
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination
1    ACCEPT     tcp  --  127.0.0.1            127.0.0.1           tcp dpt:3306
$ sudo mysql -p -u root -h l --protocol=TCP
Enter password:
ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0
5.10.2009 22:28 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Netbeans, MySQL Connector/J
Na firewallu máte povolen INPUT pro všechno, takže to pravidlo ani nebylo potřeba přidávat (řetězec INPUT vyprázdníte příkazem iptables -F INPUT, tím jej uvedete zase do původního stavu). Vy máte nastaveno, že „l“ je také název pro 127.0.0.1? Pomocí netstat -nltp máte ověřeno, že mysqld na daném portu naslouchá?
6.10.2009 09:30 Martin Michalek
Rozbalit Rozbalit vše Re: Netbeans, MySQL Connector/J

Ano, l je moje zkratka pro 127.0.0.1. Daemon na danem portu nasloucha:

$ sudo netstat -nltp | grep 3306
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      4267/mysqld

Bez "sudo" mi to nevypise nazev toho procesu (mysqld)

6.10.2009 10:43 Martin Michalek
Rozbalit Rozbalit vše Re: Netbeans, MySQL Connector/J

Googlil jsem tu chybu 2013 a nic moc jsem nenasel. Snad jen, ze by to mel vyresit tento prikaz:

mysql> grant all privileges on *.* to root@localhost identified by 'heslo0';
Query OK, 0 rows affected (0.00 sec)

... ale nepomohlo a vse zustava pri starem. Uz z toho zacinam byt mirne flustrovany, potrebuji to rozjet co nejdrive:(

5.10.2009 10:14 Martin Michalek
Rozbalit Rozbalit vše Re: Netbeans, MySQL Connector/J
Odpovědět | | Sbalit | Link | Blokovat | Admin

Tak log jsem nasel ve /var/lib/mysql/, ale neni tam nic zajimaveho...

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.