MySQL-Server Error beim Start(versuch)

Hallo.Ich habe ein kleines Problem:

Ich habe gestern meinen Server neu aufgesetzt und installierte MySQL.
Erstmal kein Problem.Jetzt wollte ich den Server Starten.Folgende Fehlermeldung erscheint:

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

So.Daher sehe ich mal in var/run nach.Überrascht stelle ich fest, dass es hier gar kein "mysqld" Verzeichnis gibt.Testweise erstelle ich eins und auch eine mysqld.sock.Dann sehe ich nach, was da so in etwa drin stehen muss.Ich schreibe:

3306
/var/lib/mysql

hinein.Nun kommt folgender Fehler:

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

Um meine Frage/mein Problem zu konkretisieren:
Ich würde gerne wissen, ob mein Lösungsansatz richtig ist.Wenn ja, sagt mir bitte , was in der mysqld.sock stehen muss, damit mein MySQL Server korrekt startet.Wenn nein, dann sagt mir bitte einen Lösungsansatz .

Ich wäre über Hilfe sehr Glücklich !

Achja, falls das wichtig sein sollte:
System: Debian Etch kernel 2.6.18
MySQL version:
# mysql --version
mysql Ver 14.12 Distrib 5.0.32, for pc-linux-gnu (i486) using readline 5.2

Sollte noch etwas relevant sein, werde ich es nachtragen.

pi()
 
Nein, dein Lösungsansatz ist falsch. Es handelt sich bei der mysql.sock um eine Socket-Datei und somit nicht um eine Text-Datei. Wo diese vom Server abgelegt wird beim Start und wo eine Client-Verbindung über localhost nach ihr sucht, wird in der my.cnf definiert.
 
Meinst, du, dass ich den Pfad des Clients auf den echten Pfad zur mysqld.sock ändere?
Ist mir auch schon in den Sinn gekommen.Dummerweise weiß ich nicht, wo sich diese Datei (wenn ich sie überhaupt habe) befindet.Gefunden hab ich bis jetzt noch nichts.

pi()
 
Sry, habe mich zu ungenau ausgedrückt.Ich brauche die datei mysqld.sock, eben weil dieses dir (var/run/mysqld/mysqld.sock) nicht existiert.Hab ich zwar schon gesagt, aber wohl zu undeutlich.

pi()

edit: uiuiui, böser Fehler.Ich habe immer mysql gestartet, und nicht mysqld.
So, der sucht aber auch nach der mysqld.sock in var/run/mysqld.
Aber das directory gibt es garnicht.Vlt sollte ich noch dazu sagen, dass:
Ich bei der Partitionierung mal ein bisschen verdreht habe und dann in etc/fstab die mountpoints änderte, um es wieder rückgängig zu machen.Dann kopierte ich die dateien um.
Das löste mein Problem.Ich denke aber nicht, dass es damit etwas zu tun hat, denn es ist unwarscheinlich, dass beim kopieren Daten verloren gingen....
 
Hallo,

die Datei mysqld.sock muss vom MySQL Server selbst angelegt werden.
In der Datei /etc/mysql/my.cnf kannst du einstellen, wohin der MySQL Server diese Socket-Datei erstellt.
Du findest die EInstellung unter der Rubrik "[mysqld]", davon die Einstellung "socket". Diesen Eigenschaftswert musst du (falls er woanders hin zeigt) auf "/var/run/mysqld/mysqld.sock" stellen und sicherstellen, dass der MySQL-Server die nötigen Zugriffsrechte hat, um diese Datei zu erstellen (Ordner /var/run/mysqld gehört bei mir mysql:mysql).
Dann startest du den Server über "/etc/init.d/mysql start" (evtl. vorher "/etc/init.d/mysql stop" aufrufen) und der Server sollte von sich aus die Socketdatei erzeugen.

mfg, metax.
 
Metax: du hast Recht :) .
Jetzt bin ich schon weiter:
070702 21:56:50 InnoDB: Started; log sequence number 0 43655
070702 21:56:50 [Note] Recovering after a crash using /var/log/mysql/mysql-bin
070702 21:56:50 [Note] Starting crash recovery...
070702 21:56:50 [Note] Crash recovery finished.
070702 21:56:50 [ERROR] mysqld: Can't find file: './mysql/host.frm' (errno: 13)
070702 21:56:50 [ERROR] mysqld: Can't find file: './mysql/host.frm' (errno: 13)
070702 21:56:50 [ERROR] Fatal error: Can't open and lock privilege tables: Can't find file: './mysql/host.frm' (errno: 13)

Aber das ist jetzt ein bisschen seltsam, denn die datei host.frm liegt genau dort, wo er sie will OO.
Wenn ich sie entferne, fragt er nichtmal mehr danach, sondern nach der Datei "mysql.host", welche aber nicht existiert... .

Dann kommt genau das:

070702 22:04:12 InnoDB: Started; log sequence number 0 43655
070702 22:04:12 [Note] Recovering after a crash using /var/log/mysql/mysql-bin
070702 22:04:12 [Note] Starting crash recovery...
070702 22:04:12 [Note] Crash recovery finished.
070702 22:04:12 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist

Wieso er immer meint, er crashte kann ich nicht ganz nachvollziehen, es sei denn er meint die gescheiterten Startversuche.

pi()
 
Hast du schonmal daran gedacht, den MySQL Server einfach nochmal sauber über den Paketmanager zu reinstallieren?

Offenbar hast du einige Sachen verstellt, so dass der Server nicht mehr sauber läuft.
Mach doch einfach mal ein
apt-get --purge remove mysql-server
apt-get install mysql-server
Evtl. musst du auch mysql-server durch den richtigen Paketnamen ersetzen (vielleicht mysql5-server).
Wenn du den Server reinstallierst, sollte er auch out-of-the-box laufen.

mfg, metax.
 
Was du dort entfernt hast, sind die Default-Tabellen, die MySQL für die Rechteverwaltung benötigt. Das Crash-Recovery läuft übrigens bei jedem Start der MySQL. Dabei wird überprüft, ob eine Tabelle beschädigt ist. Ich hoffe nur, daß du die Frame-Datei der host-Tabelle nichts gelöscht hast, sondern nur verschoben.

Die Meldung "Table 'mysql.host' doesn't exist" besagt übrigens nicht, daß eine die Datei mysql.host nicht gefunden wird, sondern daß er die Tabelle host in der Datenbank mysql nicht findet. Ist ja auch logisch, da du die Frame-Datei dazu entfernt hast.
 
So.

070702 22:55:13 InnoDB: Started; log sequence number 0 43655
070702 22:55:13 [Note] Recovering after a crash using /var/log/mysql/mysql-bin
070702 22:55:13 [Note] Starting crash recovery...
070702 22:55:13 [Note] Crash recovery finished.
070702 22:55:13 [Note] mysqld: ready for connections.
Version: '5.0.32-Debian_7etch1-log' socket: '/var/run/mysqld/mysqld.sock' port: 3306 Debian etch distribution

Sieht gut aus würd ich sagen.Waren nur die Rechte (hab bisschen (bisschen zu viel) an ihnen gedreht)
Sehr nett von euch, dass ihr euch die Mühe gemacht habt.Habt echt was gut bei mir.Hoffe, ich kann auch noch viel helfen :D.

pi()
 
Original von pi()
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
pi()

Hi pi() die Fehlermeldung kommt bei mir wenn der Dienst "mysqld" nicht gestartet ist und ich auf die DB zugreifen will. Also einfach den Dienst starten dann müsste es auch Funktionieren.
 
Zurück
Oben