bash scriptben futó mysql elérés nem megy

Sziasztok!

Van egy Linuxon futó Java program, ami futása során lefuttat egy bash scriptet.
A scriptben egy eygszerű mysql parancs van:

/usr/bin/mysql -u user -pjelszo adatbazis < /tmp/valamilyen.sql

A scriptet kézzel lefuttatva tökéletesen működik. A valamilyen.sql simán lefut.

Ha a Java programból hívódik, akkor viszont ezt az üzenetet kapom a fent sql kérés error kimenetéről:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

Próbálkoztam azzal is, hogy -h 127.0.0.1 illetve -h 192.168.x.x is beiktattam a parancsba, de akkor sem ment.
A felhasználónak van joga lefuttatni a dolgokat, hiszen kézzel megy.

Mi lehet a probléma?

Üdv: redman

Hozzászólások

Környezeti változó beállítások rosszak.
A sock-et fájlodat rossz helyen keresi, ha megnézed:

ls /var/lib/mysql/mysql.sock

ezt fogod kapni:

ls: /var/lib/mysql/mysql.sock nem érhető el: Nincs ilyen fájl vagy könyvtár

Ha ott van socket fájlod és ő ott keresi akkor mennie kellene.

Próbáld így, hátha beszédesebb:

--debug[=debug_options], -# [debug_options]

Write a debugging log. A typical debug_options string is
'd:t:o,file_name'. The default is 'd:t:o,/tmp/mysql.trace'.

Szerk:

Erre mit mond:

ls /var/run/mysqld/mysqld.sock

Próbáld meg így:
/usr/bin/mysql -S /var/lib/mysql/mysql.sock -u user -pjelszo adatbazis

Több instance esetén a cli szokott olyat kínlódni, hogy lokál db esetén socketet, távolról kapcsolódás esetén a portot meg kell adni neki. Lehet, hogy a Java miatt szükséges lehet a socket megadása.

Próba cseresznye, tipp, nem garancia. :)

Ott van benne a hiba:


connect(3, {sa_family=AF_FILE, path="/var/lib/mysql/mysql.sock"...}, 110) = -1 ENOENT (No such file or directory)

Azaz tényleg nincs ott a socket, ahol keresi a script. Nem lehet, úgy egészen véletlenül, hogy a /var/run/mysql/mysqld.sock a helyes megoldás?
A

 find -L /var -type s 

mit mond erről?

Ott van a fájl, de látszólag nincs joga hozzá:
root# find -L /var -type s
/var/lib/mysql/mysql.sock
/var/run/dbus/system_bus_socket

tomcat# find -L /var -type s
find: /var/spool/cron: Permission denied
find: /var/lost+found: Permission denied
find: /var/empty/sshd: Permission denied
find: /var/cache/samba/winbindd_privileged: Permission denied
find: /var/lock/lvm: Permission denied
find: /var/lib/heartbeat/pengine: Permission denied
find: /var/lib/heartbeat/crm: Permission denied
find: /var/lib/heartbeat/cores/root: Permission denied
find: /var/lib/heartbeat/cores/hacluster: Permission denied
find: /var/lib/heartbeat/cores/nobody: Permission denied
/var/lib/mysql/mysql.sock
find: /var/lib/mysql/mysql: Permission denied
find: /var/lib/mysql/test: Permission denied
find: /var/log/samba: Permission denied
find: /var/run/lvm: Permission denied
find: /var/run/sudo: Permission denied
find: /var/run/heartbeat/crm: Permission denied
/var/run/dbus/system_bus_socket

A feltöltött scriptben lefuttatva viszont csak ez jelenik meg.
/var/run/dbus/system_bus_socket

http://www.redman.hu

A kérdés jogos, de itt nem ez a lényeg. Ez egy általános script fájl, amit a user feltölt a kis felületén keresztül és megjavul neki minden a rendszerben.
Ebben a fájlban mindenfélét le lehet futtatni (nem csak SQL-t), amit a felhasználónak nem kell látnia.
Csak most egy sql módosítás kéne, amit nem a felhasználó felületébe kell belefejleszteni (mert ez egyedi és egyszeri módosítás).

üdv: redman

http://www.redman.hu