mysql läuft nicht fehler mit mysql.sock

Mordor

Registered User
Hallo zusammen
Ich hab heute meinen Server auf php5.2 und mysql 4.1.21 aktualisiert. Php läuft ohne Probleme, nur mysql macht probleme.
Wenn ich mysql mit /etc/init.d/mysql start starte, meldet er, dass die datenbank startet. will ich dann mit "mysql -u root" darauf zugreifen, bekomme ich folgende Fehlermeldung:

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

rufe ich mysql status mit /etc/init.d/mysql status auf, sagt er dass mysql unused ist, obwohl ich vorher gestartet habe.

Außerdem wollte ich mir die mysql.sock ansehen, sie ist leer.
In der mysql logdatei ist nichts zu finden.

Woran kann das liegen?

Zum Server:
suse 9.3 virtueller server bei 1und1 mit abgeschaltetem Plesk (plesk würde sich eh nicht starten lassen, da man ja auf myslq nicht zugreifen kann)

einen gruß und danke schon mal
 
Läuft nach dem Start ein mysql-Prozess? ("ps aux|grep mysql")
Wenn nicht ist es wohl ein Config-Fehler.
Wenn ja, ist es wahrscheinlich auch ein Config-Fehler, daß der Client nicht connecten kann. Dazu brauch ich aber dann die my.ini.

huschi.
 
Ein Mysql Prozess ist danach nicht gelaufen, dass hatte ich überprüft.

Hab dann mal Google gewälzt, und da kam dann irgendwas in die Richtung, dass der mysql-daemon nicht läuft. Also hab ich versucht mysqld zu starten, unteranderem auch über die Runtime levels von Yast. Yast hat dann angezeigt, dass mysqld läuft. Wenn ich aber den status mit /etc/init.d/mysql status überprüft hab, war die Datenbank immer noch unuesd. Danach bin ich nochmal in Yast rein. Der mysqld lief aber nichtmehr.

Die my.cnf poste ich, sobald ich wieder zuhause bin. Hab den Server erst mal wieder in die urspurngszustand versetzt, um damit arbeiten zu können. Werd die Instalation aber wahrscheinlich heute abend nochmal machen.

Danke schon mal

Gruß Markus
 
So, hier kommt das Update:

Ich hab grad mal die rpms neu installiert. PHP funktioniert immer noch super.
Bei Mysql bin ich zumindest nen kleinen schritt weiter gekommen! Ich konnte den Mysql-daemon über

Code:
mysqld_safe

starten.
Jetzt steht zumindest wenn ich den status abfrage schon mal running da. (Ein kleiner Lichtblick)
Ich hab aber immernoch folgendes Problem:
Wenn ich Über die Shell mit dem Befehl

Code:
mysql -u admin -p

in die Datenbank rein will, kommt immernoch die Meldung, dass er mysql.sock nicht finden kann.

Jetzt mal die wichtigen Daten:
1. wenn ich pstree abfrage bekomme ich das hier
Code:
initqwqcron
     tqhttpd2-preforkqqq3*[httpd2-prefork]
     tq8*[mysqld]
     tqmysqld_safeqqqmysqldqqqmysqld
     tqqmail-sendqwqqmail-clean
     x            tqqmail-lspawn
     x            tqqmail-rspawn
     x            mqsplogger
     tqsaslauthdqqqsaslauthd
     tqsshdqqqsshdqqqbashqqqpstree
     tqsyslogd
     mqxinetd

2. Wenn ich ps -aef --forest abfrage bekomme ich das hier:
Code:
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 Jan07 ?        00:00:02 init
root      9217     1  0 Jan07 ?        00:00:00 /sbin/syslogd -a /var/lib/named/
root      9223     1  0 Jan07 ?        00:00:00 /usr/sbin/saslauthd -n 2 -a pam
root      9224  9223  0 Jan07 ?        00:00:00  \_ /usr/sbin/saslauthd -n 2 -a
root      9253     1  0 Jan07 ?        00:00:01 /usr/sbin/sshd -o PidFile=/var/r
root     20982  9253  0 16:57 ?        00:00:00  \_ sshd: root@pts/0           
root     20985 20982  0 16:57 pts/0    00:00:00      \_ -bash
root     22960 20985  0 17:04 pts/0    00:00:00          \_ ps -aef --forest
root      9259     1  0 Jan07 ?        00:00:00 /usr/sbin/xinetd
qmails    9554     1  0 Jan07 ?        00:00:00 qmail-send
qmaill    9556  9554  0 Jan07 ?        00:00:00  \_ splogger qmail
root      9557  9554  0 Jan07 ?        00:00:00  \_ qmail-lspawn ./Maildir/
qmailr    9558  9554  0 Jan07 ?        00:00:00  \_ qmail-rspawn
qmailq    9559  9554  0 Jan07 ?        00:00:00  \_ qmail-clean
root      9995     1  0 Jan07 ?        00:00:00 /usr/sbin/cron
root      6338     1  0 Jan07 ?        00:00:00 /bin/sh /usr/bin/mysqld_safe --u
mysql    20594  6338  0 16:55 ?        00:00:00  \_ /usr/sbin/mysqld --basedir=/
mysql    20595 20594  0 16:55 ?        00:00:00      \_ [mysqld] <defunct>
root     25145     1  0 15:29 ?        00:00:00 /usr/sbin/httpd2-prefork -f /etc
wwwrun   25146 25145  0 15:29 ?        00:00:00  \_ /usr/sbin/httpd2-prefork -f
wwwrun   25147 25145  0 15:29 ?        00:00:00  \_ /usr/sbin/httpd2-prefork -f
wwwrun   28158 25145  0 15:36 ?        00:00:00  \_ /usr/sbin/httpd2-prefork -f
mysql    20596     1  0 16:55 ?        00:00:00 /usr/sbin/mysqld --basedir=/usr
mysql    20597     1  0 16:55 ?        00:00:00 /usr/sbin/mysqld --basedir=/usr
mysql    20598     1  0 16:55 ?        00:00:00 /usr/sbin/mysqld --basedir=/usr
mysql    20599     1  0 16:55 ?        00:00:00 /usr/sbin/mysqld --basedir=/usr
mysql    20600     1  0 16:55 ?        00:00:00 /usr/sbin/mysqld --basedir=/usr
mysql    20601     1  0 16:55 ?        00:00:00 /usr/sbin/mysqld --basedir=/usr
mysql    20602     1  0 16:55 ?        00:00:00 /usr/sbin/mysqld --basedir=/usr
mysql    20603     1  0 16:55 ?        00:00:00 /usr/sbin/mysqld --basedir=/usr

3. Die my.cnf zeigt folgendes an:
Code:
[safe_mysqld]
err-log=/var/lib/mysql/mysqld.log

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates

[isamchk]
key_buffer = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[myisamchk]
key_buffer = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout

4. In der mysqld.log steht folgendes
Code:
A mysqld process already exists at  Tue Jan 9 17:08:53 CET 2007

Das schöne ist ja, dass sich mysld nur dann startet, wenn ich es per hand mit mysqld_safe starte. Normalerweise müsste dass doch auch mit /etc/init.d/mysql start automatisch mitstarten.

Ach ja, zu den Prozessen will ich noch was sagen! Ich habe versucht die Prozesse per hand mit "kill -kill "prozess"" zu löschen. Das geht aber ned, denn wenn ich ihn rauslösche ist der bei nächsten aufruf mit ps wieder da.

Danke schon mal im vorraus

Gruß Mordor
 
Zwei Dinge:
a) Beende erstmal _alle_ mysqld/mysqld_safe-Prozesse! Zur Not mit "killall mysqld". Und nutze den kill-Befehl richtig: "kill [PID]" oder "kill -9 [PID]". Vorher noch Apache beenden, damit von PHP keine Session mehr offen ist.
Dann sollte "/etc/init.d/mysql start" auch wieder funktionieren.

b) In der my.cfn fehlt ein "socket = /var/run/mysqld/mysqld.sock" wenn Du wirklich über Socket gehen willst. Und zwar in den Sektionen [client], [mysqld] und sicherheitshalber in [mysqld_safe].

huschi.
 
So, schön langsam verzweifle ich hier richtig.
Ich hab das mal so gemacht wie du gesagt hast, nur das das Verzeichnis "var/run" bei mir nicht existiert. Also hab ich den aufenthaltsort mit find gesucht. Liegt bei mir in /var/lib/mysql. Da ist dann auch die mysql.sock zu finden.

Also zuerst mal den Indianer abgeschaltet, dann die Prozesse mit kill -9 [PID] platt gemacht. Musste mehrmals ansetzen, da sich die Prozesse immer wieder von neuem gestartet haben, sie waren auf jeden fall einfach wieder da beim nächsten ps aufruf.
Danach waren weder unterr "pstree" noch unter "ps -aef --forest" mysql Prozesse zu sechen.
Also als nächstes die my.cnf geöffnet mit vi und die zeilen geupdatet.
Danach hab ich dann mysql und apache wieder gestartet.

Folgenden Erfolg hatte ich dann:
1. mysql status ergab immer noch unuesd
2. die mysql.sock fehlt immer noch (Ich hab mal nachgesehen, die Datei ist auch leer)
3. mysqld.log schreibt folgende:
Code:
070110 01:30:46  mysqld started
070110  1:30:46 [ERROR] bdb:  unable to initialize mutex: Function not implemented
070110  1:30:46 [ERROR] bdb:  process-private: unable to initialize environment lock: Function not implemented
070110  1:30:46  InnoDB: Started; log sequence number 0 665267
070110  1:30:46 [ERROR] Can't init databases
070110  1:30:46 [ERROR] Aborting

4. Nach dem starten von mysql sind keine Prozesse auffindbar
5. Wenn ich versuche den Daemon mit mysqld_safe zu starten bekomm ich das hier:
Code:
Starting mysqld-max daemon with databases from /var/lib/mysql
STOPPING server from pid file /var/lib/mysql/s15227493.onlinehome-server.info.pid
070110 01:42:04  mysqld ended

So, ich bin jetzt mit meinem Latein ziemlich durch. Man kann sich zwar streiten wie groß das ist;). Zumindest ist es ned so, dass ich mich garned auskenne. Danke dir auf jedenfall für deine Hilfe, jetzt hilft glaub ich nur noch ein Wunder. Und das auch noch mit 8 STD. für den Google aufwand.

Danke auf jedenfall

Gruß Mordor

Ps Wenn mir noch zu helfen ist, bitte gerne posten!
 
Diese Fehlermeldung ist doch relativ deutlich:
[ERROR] Can't init databases
Unter /var/lib/mysql/ sollten sich die Datenbanken finden. Diese brauchen die entsprechenden Rechte für MySQL. Mindestens eine DB sollte vorhanden sein:
Code:
drwxr-xr-x  2 mysql mysql               4096 Jun 22  2004 mysql

huschi.
 
Es läuft es läuft!!!!!!!!:D

Danke auf jedenfall mal an Huschi, hast mir echt super weiter geholfen. Die Zugangsrechte waren aber richtig gesetzt. Hab dann in nem amerikanischen MySql Forum nen Beitrag über das Problem gefunden. Da steht was von BDB storage engine von Mysql drin, und das die bei dem Fehler Probleme machen würde. Das ganze kann man mit nachfolgendem Befehl umgehen, und gleichzeitig den Mysql_Daemon neu starten

Code:
mysqld_safe --skip-bdb

So, auf jedenfall funzt es wieder, und nochmal vielen Dank

Gruß Mordor

Ps Ich wollte nur noch sagen, ich hab das bis jetzt nur in der shell getestet, mit PHP probier ich das gleich mal
 
MySql Server läuft nicht....

Also ich hatte mein SQL Server abgedated (per Yast2 upgedated)
danach lief der MySql-Daemon nicht mehr als ich ihn starten wollte sagte mir die Console "failed".

Da hab ich mir die logdatei angeschaut und dort folgendes gefunden...
Code:
070201 13:15:59  mysqld started
070201 13:15:59  InnoDB: Started; log sequence number 0 43674
070201 13:15:59 [ERROR] Fatal error: Can't open privilege tables: Table 'mysql.host' doesn't exist
070201 13:15:59  mysqld ended

Kann mir einer behilflich sein denn das ist alles noch neuland für mich, Danke schon mal im vorraus...

Mfg NaNo
 
Last edited by a moderator:
Sieht so aus, als würde mysql die Tabelle mit den Privilegien nicht finden. Die Braucht man, um Zugangsrechte in Mysql zu definieren, usw.

Wenn du nur ein Update gemacht hast, sollte die eigentlich weiterhin da sein!
Du kannst ja mal nachsehen, ob die Tabelle wirklich nicht da ist, oder ob sie nur defekt ist.

Bei einem SUSE-system liegen die Mysql-Tabellen und Datenbanken unter.
Code:
var/lib/mysql/mysql
zumindest ist das bei mir so. Da müsstest du dann Dateien mit den Endungen MYD, MYI und frm finden. Unteranderem gibts da eben auch drei Dateien mit den besagten Endungen, die die Tabelle wiederspiegeln, die bei dir in den Logs auftauch.

Wenn die nicht vorhanden sind, musst du die Mysql Datenbank neu erstellen.
 
MySql Server läuft nicht.... priviliges table fehlt

MOD: Full-Quote entfernt!
Das problem hast du richtig erkannt aber die Dateien mit besagten endungen sind nicht vorhanden, ich hätte vieleicht sagen sollen das ich das mysql erst deinstalliert habe und dann die neue version installiert hatte per yast2.

Und starten kann ich den Daemon ja nicht weil genau die datei fehlt !:(

MFG NaNo
 
Last edited by a moderator:
Noramlerweise müssten die Grant Tabellen beim ersten mal Starten von mysql neu angelegt werden.

Du kannst ja mal folgendes versuchen:
1. Verschiebe alle Tabellen-dateien aus dem ordner mysql in einen anderen Ordner (um sie als Backup zu haben)
2. Es dürften dann im mysql-ordner keine Tabellendateien der Grant Tabelle mehr sein.
3. Führe auf der shell den Befehl
Code:
scripts/mysql_install_db --user=mysql
Das erstellt die Grant Tabellen neu.
3. starte mysql neu über /etc/init.d/mysql start

Jetzt müsste mysql eigentlich die Grant Tabellen neu erstellen, und somit auch die host Tabelle.

Aber Vorsicht:
Mysql hat jetzt kein Passwort für den Benutzer root, das musst die erst noch selbst anlegen. Erst dann ist Mysql abgesichert.
 
MySql Server läuft nicht.... priviliges table fehlt

3. Führe auf der shell den Befehl
Code:
scripts/mysql_install_db --user=mysql
Das erstellt die Grant Tabellen neu.

Wenn ich das versuche gibt mir die shell folgende fehlermeldung !
Code:
-bash: scripts/mysql_install_db: No such file or directory

ich denke mal es liegt daran das der scripts ordner nicht vorhanden ist, ich benutze Suse 9.3 als server version ...
Sollte ich vieleicht noch mal versuchen mysql zu updaten ohne das erst zu deinstallieren?

MFG NaNo
 
Probier das mal ohne das script vorne dran. Normalerweise wenn Mysql installiert ist, geht der Befehl.

Ich hab auch ein Suse 9.3 und da hats geklappt bei der Installation!
 
MySql Server läuft nicht....

MOD: 1. Full-Quote entfernt!
Probier das mal ohne das script vorne dran. Normalerweise wenn Mysql installiert ist, geht der Befehl.

Ich hab auch ein Suse 9.3 und da hats geklappt bei der Installation!

Supi hat geklappt Mysql Server läuft wieder rund, dankeschön....

Mfg NaNo:D
 
Last edited by a moderator:
Back
Top