MySQL Problem

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
be1j0
Beiträge: 18
Registriert: 13.09.2007 09:07:11
Kontaktdaten:

MySQL Problem

Beitrag von be1j0 » 13.09.2007 09:12:41

hallo,

mein mysql server läuft in einer eigens dafür vorgesehenen chroot umgebung (/home/chroot/mysql), der user und die usergroup lauten: chrmysql

das problem was auftaucht wenn ich ihn starte ist folgendes:
mysql -u root -p
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
hab nach dem problem nun schon über 4 stunden gegoogled aber kam zu keiner lösung. in der jail exsistiert die mysqld.sock auch !
server:/home/chroot/mysql# ls -al var/run/mysqld
insgesamt 12
drwxr-xr-x 2 chrmysql root 4096 2007-09-12 17:58 .
drwxr-xr-x 4 root root 4096 2007-09-12 16:32 ..
-rw-rw---- 1 chrmysql chrmysql 5 2007-09-12 17:58 mysqld.pid
srwxrwxrwx 1 chrmysql chrmysql 0 2007-09-12 17:58 mysqld.sock
unter prozessen läuft der mysql server per chroot auch:
chrmysql 5607 0.0 2.9 125960 15328 pts/0 Sl 17:58 0:00 | \_ /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=chrmysql --pid-file=/var/run/mysqld/mysqld.pid --skip-external-locking --port=3306 --socket=/var/run/mysqld/mysqld.sock
gestartet wurde er über den befehl
chroot /home/chroot/mysql /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=chrmysql --pid-file=/var/run/mysqld/mysqld.pid --skip-external-locking --port=3306 --socket=/var/run/mysqld/mysqld.sock & disown
dabei hat er mir folgendes gesagt
server:/home/chroot/mysql/# chroot /home/chroot/mysql /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=chrmysql --pid-file=/var/run/mysqld/mysqld.pid --skip-external-locking --port=3306 --socket=/var/run/mysqld/mysqld.sock & disown
[1] 5640
server:/home/chroot/mysql/etc/mysql# 070912 16:07:41 InnoDB: Started; log sequence number 0 43655
070912 16:07:41 [Note] Recovering after a crash using /var/log/mysql/mysql-bin
070912 16:07:41 [Note] Starting crash recovery...
070912 16:07:41 [Note] Crash recovery finished.
070912 16:07:41 [Note] /usr/sbin/mysqld: ready for connections.
Version: '5.0.32-Debian_7etch1-log' socket: '/var/run/mysqld/mysqld.sock' port: 3306 Debian etch distribution
obwohl er mir anzeigt dass der port gebunden ist:
Aktive Internetverbindungen (Nur Server)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 localhost:1987 *:* LISTEN 2257/sshd
tcp 0 0 localhost:mysql *:* LISTEN 5607/mysqld
tcp 0 0 *:48746 *:* LISTEN 2162/rpc.statd
tcp 0 0 *:sunrpc *:* LISTEN 1778/portmap
tcp 0 0 *:auth *:* LISTEN 2133/inetd
tcp 0 0 localhost:smtp *:* LISTEN 2121/exim4
tcp6 0 0 *:www *:* LISTEN 4766/apache2
udp 0 0 *:32768 *:* 2162/rpc.statd
udp 0 0 *:642 *:* 2162/rpc.statd
udp 0 0 *:bootpc *:* 2237/dhclient3
udp 0 0 *:sunrpc *:* 1778/portmap
Aktive Sockets in der UNIX Domäne (Nur Server)
Proto RefZäh Flaggen Typ Zustand I-Node PID/Program name Pfad
unix 2 [ ACC ] STREAM HÃRT 5422 2078/acpid /var/run/acpid.socket
unix 2 [ ACC ] STREAM HÃRT 59464 5607/mysqld /var/run/mysqld/mysqld.sock
wenn ich mich mit telnet auf den port connecte kommt:
server:/home/chroot/mysql/# telnet 127.0.0.1 3306
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
F
5.0.32-Debian_7etch1-log|k$n"VoK,fD\&EgW^Q^bSConnection closed by foreign host.
nach etwa 5 sekunden kommt connection closed by foreign host
ich versteh nicht wenn der port nicht gebunden werden kann und wenn man nicht sich einloggen kann warum er dann per telnet einen offenen port anzeigt hinter dem anscheinend ein mysqld läuft - auch netstat macht ja den eindruck ?
Evtl ein Permissions bzw Rechtezuweisungsproblem? Bei chroot-Umgebung wäre ja sowas denkbar möglich....



was ich bisher gemacht habe ware die usergroups bei den /var/run zu überprüfen und anzupassen auf chrmysql

über
find / mysql | grep mysql
alle mysql files versucht zu finden und in die jail struktur einzugliedern
ldd /usr/sbin/mysqld
eingegeben und alle nötigen libraries von hand in die jail struktur eingegliedert ...

das komische ist jetzt wenn ich den mysql ganz normal über /etc/init.d/mysql start
starte - also außerhalb der jail ... macht er keine problem ... deshalb whats wrong ?

mfg
be1j0

ekle
Beiträge: 56
Registriert: 08.11.2005 21:02:03
Lizenz eigener Beiträge: MIT Lizenz
Kontaktdaten:

Beitrag von ekle » 13.09.2007 12:21:44

mysql geht vermutlich auf den socket auf deinem normalen system und nicht auf den im chroot
versuch mal
mysql -S /home/chroot/mysql/var/run/mysqld/mysqld.sock

be1j0
Beiträge: 18
Registriert: 13.09.2007 09:07:11
Kontaktdaten:

Beitrag von be1j0 » 13.09.2007 16:54:17

Vielen Dank,

Ich habs jetzt über die richtigen chmods und einbinden von tcp-ip in der my.cnf mit ner bestimmten ip - weil in der chroot der socket nicht stimmt wie du gesagt hast und es an tcp/ip am besten gebunden geht - zum laufen gebracht.

hab hier einen uralt rechner auf dem ein mysql server läuft und hab von dem die dante in /var/lib/mysql/NewDienst in den neuen ordner /home/chroot/mysql/var/lib/mysql/NewDienst gesetzt ...wenn ich mir das jetzt per phpmyadmin anschauen will kommt:
070913 16:50:11 [ERROR] /usr/sbin/mysqld: Can't find file: './NewDienst/p.frm' (errno: 13)
inhalt der dir ist:
server:/home/chroot/mysql/var/lib/mysql/NewDienst# ls -al
insgesamt 416
drw-rw---- 2 chrmysql chrmysql 4096 2007-09-13 18:49 .
drwxr-xr-x 6 chrmysql chrmysql 4096 2007-09-13 18:22 ..
-rw-rw---- 1 chrmysql chrmysql 8914 2007-09-13 18:13 NewPhysik.frm
-rw-rw---- 1 chrmysql chrmysql 124771 2007-09-13 18:13 NewPhysik.ISD
-rw-rw---- 1 chrmysql chrmysql 1024 2007-09-13 18:13 NewPhysik.ISM
-rw-rw---- 1 chrmysql chrmysql 8808 2007-09-13 18:48 p.frm
-rw-rw---- 1 chrmysql chrmysql 8808 2007-09-13 18:13 P.frm
-rw-rw---- 1 chrmysql chrmysql 113185 2007-09-13 18:49 p.ISD
-rw-rw---- 1 chrmysql chrmysql 113185 2007-09-13 18:13 P.ISD
-rw-rw---- 1 chrmysql chrmysql 1024 2007-09-13 18:49 p.ISM
-rw-rw---- 1 chrmysql chrmysql 1024 2007-09-13 18:13 P.ISM
ich bin echt überfragt wo das Problem liegt. sind die mysqldbs nicht kompatibel mit der neueren mysqld auf dem neuen server?

be1j0
Beiträge: 18
Registriert: 13.09.2007 09:07:11
Kontaktdaten:

Beitrag von be1j0 » 14.09.2007 10:08:28

ich hab jetzt mit mysqldump die mysqldb gebackuped läuft alles jetzt in phpmyadmin wunderbar doch wenn ich die php datei aufruf und er connecten soll kommen 3 fehlermeldungen:

fehlermeldung 1
Warning: setlocale() [function.setlocale]: Passing locale category name as string is deprecated. Use the LC_* -constants instead. in /var/www/apache2-default/interna/dp.php3 on line 51
inhalt line51
setlocale("LC_TIME", "de_DE");
fehlermeldung 2
Warning: mysql_num_fields(): supplied argument is not a valid MySQL result resource in /var/www/apache2-default/interna/dp.php3 on line 86
inhalt line86
$spalten = mysql_num_fields($result);
fehlermeldung 3
Warning: mysql_field_name(): supplied argument is not a valid MySQL result resource in /var/www/apache2-default/interna/dp.php3 on line 116
inhalt line116
$felder[$spalte] = mysql_field_name($result, $spalte);
Hat jmd eine Idee wie ich das fixen kann ?

(die permissions etc sind eigentlich auch die richtigen, kann mit den fehlermeldungen nur nichts anfangen)

be1j0
Beiträge: 18
Registriert: 13.09.2007 09:07:11
Kontaktdaten:

Beitrag von be1j0 » 14.09.2007 12:09:44

habe die Probleme lösen können, indem ich einfach nochmal neu die DB aufgespielt habe. Das einzige Problem was dann noch exsistiert hat war das setlocale-problem, da hab ich mir die manuel angeschaut: http://www.php.net/manual/de/function.setlocale.php
und den befehl:
setlocale("LC_TIME", "de_DE");
umgeschrieben in:
setlocale(LC_TIME, 'de_DE');
Jetzt bringt er mir keine Fehlermeldung mehr

THX

Antworten