Dieser Abschnitt enthält Vorschläge zur Fehlersuche, wenn unter Unix Probleme beim Start des Servers auftreten. Wenn Sie Windows verwenden, finden Sie Informationen in Abschnitt 2.3.14, „Troubleshooting einer MySQL-Installation unter Windows“.
Haben Sie Probleme beim Starten des Servers, dann probieren Sie folgende Schritte:
Suchen Sie im Fehlerlog nach Ursachen dafür, dass der Server nicht startet.
Geben Sie alle Sonderoptionen an, die von den von Ihnen verwendeten Speicher-Engines benötigt werden.
Stellen Sie sicher, dass der Server die Position des Datenverzeichnisses kennt.
Stellen Sie auch sicher, dass der Server auf das Datenverzeichnis zugreifen kann. Besitzrechte und Berechtigungen für das Datenverzeichnis und seine Inhalte müssen so konfiguriert sein, dass der Server sie lesen und ändern kann.
Überprüfen Sie, ob die Netzwerkschnittstellen, die der Server verwenden will, vorhanden sind.
          Einige Speicher-Engines haben Optionen, die ihr Verhalten
          steuern. Sie können eine Datei my.cnf
          erstellen und darin die Startoptionen der Engines angeben, die
          Sie zu verwenden beabsichtigen. Wenn Sie Speicher-Engines
          verwenden wollen, die transaktionssichere Tabellen
          (InnoDB, BDB,
          NDB) unterstützen, dann vergewissern Sie
          sich, dass diese wie gewünscht konfiguriert sind, bevor Sie
          den Server starten:
        
              Wenn Sie InnoDB-Tabellen verwenden,
              finden Sie Informationen in
              Abschnitt 14.2.3, „Konfiguration“.
            
              Setzen Sie BDB-Tabellen
              (BerkeleyDB-Tabellen) ein, dann finden Sie Informationen
              in Abschnitt 14.5.3, „BDB-Startoptionen“.
            
Wenn Sie MySQL-Cluster verwenden, finden Sie Informationen in Abschnitt 16.4, „MySQL Cluster: Konfiguration“.
Speicher-Engines verwenden, sofern keine Optionswerte definiert sind, die Vorgabewerte. Wir empfehlen deswegen, die verfügbaren Optionen zu prüfen und explizite Werte für diejenigen Optionen anzugeben, bei denen die Vorgabewerte nicht für Ihre Installation geeignet sind.
Wenn der mysqld-Server startet, wechselt er in das Datenverzeichnis. In diesem Verzeichnis erwartet er das Vorhandensein der Datenbanken, und hier wird er auch seine Logdateien speichern. Auch die PID-Datei (Process ID, Prozesskennung) wird im Datenverzeichnis abgelegt.
          Das Datenverzeichnis wird bei der Kompilierung des Servers
          fest zugeordnet. Standardmäßig sucht der Server deswegen an
          der angegebenen Position nach diesem Verzeichnis. Befindet
          sich das Datenverzeichnis in Ihrem System an anderer Stelle,
          dann funktioniert der Server nicht einwandfrei. Durch Aufruf
          des Befehls mysqld mit den Optionen
          --verbose und --help können
          Sie die Vorgaben für die Pfadeinstellungen ermitteln.
        
Wenn die Standardpositionen dem MySQL-Installationslayout auf Ihrem System nicht entsprechen, können Sie sie durch Angabe von Optionen für mysqld oder mysqld_safe auf der Befehlszeile oder in einer Optionsdatei außer Kraft setzen.
          Um die Position des Datenverzeichnisses explizit anzugeben,
          verwenden Sie die Option --datadir.
          Allerdings können Sie mysqld die Position
          des Basisverzeichnisses angeben, in dem MySQL installiert ist;
          mysqld wird dann in diesem Verzeichnis nach
          dem Datenverzeichnis suchen. Die Angabe erfolgt mit der Option
          --basedir.
        
          Um die Auswirkungen der Optionen zur Pfadangabe zu
          überprüfen, rufen Sie mysqld mit diesen
          Optionen auf, gefolgt von den Optionen
          --verbose und --help. Wenn
          Sie beispielsweise in das Verzeichnis wechseln, in dem
          mysqld installiert ist, und dann den
          folgenden Befehl ausführen, werden die Auswirkung des
          Serverstarts bei einem Basisverzeichnis
          /usr/local angezeigt:
        
shell> ./mysqld --basedir=/usr/local --verbose --help
          Sie können auch andere Optionen wie
          --datadir spezifizieren; beachten Sie aber,
          dass --verbose und --help
          jeweils als letzte Optionen aufzuführen sind.
        
          Wenn Sie die gewünschten Pfadeinstellungen ermittelt haben,
          starten Sie den Server ohne --verbose und
          --help.
        
Wird mysqld gerade ausgeführt, dann können Sie die verwendeten Pfadeinstellungen durch Absetzen des folgenden Befehls ermitteln:
shell> mysqladmin variables
Oder:
shell> mysqladmin -h host_name variables
          host_name ist der Name des MySQL
          Server-Hosts.
        
          Erhalten Sie beim Starten von mysqld die
          Fehlermeldung Errcode 13
          (Permission denied, Berechtigung
          verweigert), dann gestatten die Berechtigungen des
          Datenverzeichnisses oder seiner Inhalte keinen Serverzugriff.
          In diesem Fall ändern Sie die Berechtigungen für die
          betreffenden Dateien und Verzeichnisse so, dass der Server das
          Recht hat, sie zu verwenden. Sie können den Server auch als
          root starten, wovon aus
          sicherheitstechnischer Sicht jedoch dringend abgeraten wird.
        
          Wechseln Sie unter Unix in das Datenverzeichnis und
          überprüfen Sie die Besitzrechte für das Datenverzeichnis
          und seinen Inhalt, um den Serverzugriff zu gewährleisten.
          Verwenden Sie etwa folgenden Befehl, wenn das Datenverzeichnis
          /usr/local/mysql/var ist:
        
shell> ls -la /usr/local/mysql/var
          Wenn die Besitzrechte für das Datenverzeichnis oder seine
          Unterverzeichnisse nicht bei dem Anmeldekonto liegen, das Sie
          zur Ausführung des Servers verwenden, dann müssen Sie die
          Besitzrechte für diese Ressourcen dem Konto zuweisen. Heißt
          das Konto mysql, dann verwenden Sie
          folgende Befehle:
        
shell>chown -R mysql /usr/local/mysql/varshell>chgrp -R mysql /usr/local/mysql/var
          Wenn der Server nicht korrekt startet, prüfen Sie das
          Fehlerlog. Logdateien befinden sich im Datenverzeichnis (unter
          Windows normalerweise C:\Programme\MySQL\MySQL
          Server 5.1\data, bei
          Unix-Binärdistributionen in
          /usr/local/mysql/data und bei
          Unix-Quelldistributionen in
          /usr/local/var). Suchen Sie im
          Datenverzeichnis nach Dateien mit Namen des Typs
          host_name.errhost_name.loghost_name der Name des
          Serverhosts ist. Überprüfen Sie nun die letzten paar Zeilen
          dieser Dateien. Unter Unix können Sie sie mit
          tail anzeigen:
        
shell>tailshell>host_name.errtailhost_name.log
Das Fehlerlog sollte Informationen dazu enthalten, warum der Server nicht starten konnte. Beispielsweise könnte das Log etwa Folgendes enthalten:
000729 14:50:10 bdb: Recovery function for LSN 1 27595 failed 000729 14:50:10 bdb: warning: ./test/t1.db: No such file or directory 000729 14:50:10 Can't init databases
          Das bedeutet, dass Sie mysqld nicht mit der
          Option --bdb-no-recover gestartet haben;
          Berkeley DB hat dann, als es versuchte, Ihre Datenbanken
          wiederherzustellen, Ungereimtheiten in Bezug auf die eigenen
          Logdateien erkannt. Um fortzufahren, sollten Sie die alten
          Berkeley DB-Logdateien aus dem Datenbankverzeichnis an einen
          anderen Ort verschieben, wo Sie sie später untersuchen
          können. Die BDB-Logdateien werden in
          chronologischer Reihenfolge beginnend mit
          log.0000000001 benannt; die Zahl im Namen
          wird dabei stets erhöht.
        
          Wenn Sie mysqld mit Unterstützung für
          BDB-Tabellen ausführen und beim Start von
          mysqld ein Speicherauszug auftritt, könnte
          dies auf Probleme in Verbindung mit dem
          BDB-Wiederherstellungslog hinweisen. In
          diesem Fall können Sie versuchen, mysqld
          mit der Option --bdb-no-recover zu starten.
          Wenn das klappt, sollten Sie alle
          BDB-Logdateien aus dem Datenverzeichnis
          entfernen und dann versuchen, mysqld ohne
          die Option --bdb-no-recover neu zu starten.
        
Tritt einer der folgenden Fehler auf, dann bedeutet dies, dass ein anderes Programm (vielleicht ein anderer mysqld-Server) den TCP/IP-Port bzw. die Unix-Socketdatei verwendet, die mysqld für sich beansprucht:
Can't start server: Bind on TCP/IP port: Address already in use Can't start server: Bind on unix socket ...
Ermitteln Sie mit dem Befehl ps, ob ein anderer mysqld-Server ausgeführt wird. Ist dies der Fall, dann fahren Sie den Server herunter, bevor Sie mysqld erneut starten. (Wenn ein anderer Server ausgeführt wird und Sie tatsächlich mehrere Server gleichzeitig betreiben wollen, finden Sie Informationen zur Vorgehensweise in Abschnitt 5.13, „Mehrere MySQL-Server auf derselben Maschine laufen lassen“.)
          Läuft kein anderer Server, dann führen Sie den Befehl
          telnet  aus.
          (Die Standardportnummer von MySQL ist 3306.) Betätigen Sie
          dann mehrfach die Eingabetaste. Erhalten Sie keine
          Fehlermeldung in der Art von your_host_name
          tcp_ip_port_numbertelnet: Unable to
          connect to remote host: Connection refused, dann
          verwendet ein anderes Programm den TCP/IP-Port, den 
          mysqld nutzen will. Sie müssen dann ermitteln,
          welches Programm dies ist, und es deaktivieren; alternativ
          können Sie mysqld mit der Option
          --port auch anweisen, an einem anderen Port
          zu lauschen. In diesem Fall müssen Sie auch die Portnummer
          für Clientprogramme angeben, die über TCP/IP eine Verbindung
          mit dem Server herstellen wollen.
        
Ein anderer Grund, warum kein Zugriff auf den Port möglich ist, könnte eine laufende Firewall sein, die Verbindungen zu diesem Port unterbindet. In diesem Fall müssen Sie die Firewall-Einstellungen so abändern, dass ein Zugriff möglich ist.
          Wenn der Server startet, Sie aber keine Verbindung zu ihm
          herstellen können, dann sollten Sie sicherstellen, dass ein
          Eintrag wie der folgende in /etc/hosts
          vorhanden ist:
        
127.0.0.1 localhost
Dieses Problem tritt nur bei Systemen auf, die über keine funktionierende Thread-Bibliothek verfügen und für die MySQL zur Verwendung von MIT-pthreads konfiguriert sein muss.
          Wenn Sie mysqld nicht zum Laufen bringen,
          können Sie versuchen, unter Verwendung der Option
          --debug eine Trace-Datei zu erstellen, um das
          Problem zu ermitteln. Siehe auch
          Abschnitt E.1.2, „Trace-Dateien erzeugen“.
        
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.

