[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: MySQL: mysqld startet nach reboot nicht mehr..



On Sat, Jun 18, 2005 at 10:27:51PM +0200, Julien Lacroix wrote:
> Hagen Kuehnel wrote:
> 
> >>050617 21:22:44  InnoDB: Started
> >>050617 21:22:44 Fatal error: Can't open privilege tables: Table
> >>'mysql.host' doesn't exist
> >>050617 21:22:44 Aborting
> > Und? Tut sie oder nicht? (s.u.)
> 
> Sie existiert nicht.
> find / -name "mysql.host" findet z.B. nichts.
> 
Nee, diese Datei gibt es nicht - MySQL meldet Dir dass für den Start
eine Tabelle "mysql.host" existieren muss - das ist sozusagen der
Full-qualified-Name einer Tabelle und bedeutet:
Datenbank: "mysql" Tabelle: "host"

In der Datenbank liegen bekanntlich Systemtabellen für den MySQLd, unter
anderem host-Privilegien (welcher host darf was). Üblicherweise werden
hier keine Einstellungen gemacht, daher ist die Datei "mysql.MYD" leer,
diese kannst Du mit touch anlegen. Das hilft aber nicht viel, weil
weiterhin die Dateien "host.MYI" und "host.frm" benötigt werden. Zum
einen ist das eine Index-Datei und frm ist mir gerade entfallen (google)

Du suchst also in Deinem System nach:
find / -name "host.MYD"
find / -name "host.MYI"
find / -name "host.frm"

Wenn Du diese nicht mehr hast *tststs*, kannst Du sie Dir von einem
anderen  MySQL-Server holen - Zugriffsrechte auf die Datenbank-Dateien
sind dabei sehr wichtig.

> > Benötigst Du InnoDB? oder ist das nur mal so eingeschaltet weil es
> > default ist?
> 
> Nein ich brauch InnoDB nicht. Letzendlich konnte ich aber auch keinen
> Nachteil darin sehen es zu benutzen. Es sei denn der Fehler resultiert 
> aus der Verwendung von InnoDB :)

Wenn ich einen Webserver als Server zum simplen ausliefern von Bildern
benötige, werde ich mit Sicherheit keinen Apache mit allen nur möglichen
Modulen aufsetzen. Irgendwann benötigt man die Performance. InnoDB ist
ein separater Treiber und muss extra geladen werden, macht damit MySQLd
ein stückweit langsamer - InnoDB sollte aber auch vor allem sehr gut
konfiguriert werden (Logfiles, DB-space, Größe der Dateien etc.)

 
> >Als welcher mysql-user (Rechte),
> 
> root

Typisch ;)
auch ein mysql-root sollte nur für CREATE DATABASE und in der Datenbank
"mysql" genutzt werden, den Rest sollten alles niedrig priveligiert user
machen. Ich sag's ja nur.

> >welche Version von Apache.
>
> Apache/2.0.54 (Debian GNU/Linux) PHP/4.3.10-15 Server
>
Ampache, sorry - Hast Du verifiziert, was die Installation macht?
Üblicherweise verschwindet eine Datei nicht von allein.

> >>Wo krieg ich da weitere Anhaltspunkte? Wäre Schade wenns die DB
> >>zerrissen hätte =(
> > ls -l /var/lib/mysql/mysql/

Hier ist der Standard-Debian-Pfad für die MySQL-Datenbank, da müssen die
drei host.*-Dateien drin sein (und auch noch andere).
Ist das Verzeichnis überhaupt da?

> > man mysqldump
> > man mysqlhotcopy
> 
> Ok. Dann geh ich erst das durch.

Ein freundlicher Hinweis meinerseits, dass man mit Backups einen
aufgetretenen Fehler beheben kann. So etwas sollte als cronjob laufen.
Daten die nicht gesichert werden gelten als "zur Löschung freigegeben".
Das gilt insbesondere für Datenbanken - wie der Name schon sagt.


Lösung für Dich, nimm Dir drei default-host-Dateien und fahre damit den
Datenbankserver hoch. Aber in die Ursachenforschung für das Problem
würde ich schon einige Stunden stecken - Du hast vermutlich auch kein
MySQL-Log aktiviert?

Hagen



Reply to: