PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : mysqld startet nicht



Toast78
10.08.07, 19:28
Hallo,

ich habe von meiner Suse 9.1-Distribution den mySQL-Server installiert (mysql Ver 12.22 Distrib 4.0.18, for suse-linux (i686)).
Starte ich den Konsolenmanager mysqlcc, so wird mir beim Starten meines Servers folgende Meldung ausgegeben:
[Linux] ERROR 2002: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
Klar, diese Datei ist auch nicht vorhanden, weil der Demon ja gar nicht gestartet wurde (wie der Name des Thread erkennen lässt). In der Log-Datei im selbigen Verzeichnis steht auch nichts. Bisher.
Der Befehl

ps aux | grep mysql
bringt folgende Ausgabe

root 4422 0.3 1.9 16436 9960 ? S 18:49 0:01 mysqlcc
root 4455 0.0 0.1 1724 624 pts/39 R+ 18:53 0:00 grep mysqlWas mir das S und das R+ sagen wollen, ist mir allerdings noch nicht klar.
Nachdem ich dann versuchte den Demon mit

/usr/bin/mysqld_safe
zu starten, wurde dann endlich das Log mit diesen Meldungen gefüllt:

070810 18:56:55 mysqld started
070810 18:56:55 Fatal error: Can't open privilege tables: Table 'mysql.host' doesn't exist
070810 18:56:55 Aborting

070810 18:56:55 /usr/sbin/mysqld: Shutdown Complete

070810 18:56:55 mysqld ended
Daraus folgere ich erstmal, dass so etwas wie eine Masterdatenbank nicht vorhanden ist, um den Demon zu starten. Aber ob selbst das so stimmt, wage ich zu bezweifeln.

Natürlich habe ich auch versucht, als root mit mysqld start den Demon zu starten, was sehr undankbar abgewiesen wurde ;). Allerdings habe ich es dann auch nicht geschafft per su - mysql auf den bereits angelegten User mysql umzuschalten, damit ich mysqld starten kann. Und weder die Doku unter /usr/share/doc/packages/mysql/manual.pdf noch das Reference Manual auf der mySQL-Homepage (http://dev.mysql.com/doc/refman/4.1/en/starting-server.html) wollte mir bisher auch keinen Aufschluss darüber geben, wie ich mysqld als root starten kann :o.

Ach ja, der Server den ich starten wollte, hatte folgende Daten:

Name: Linux
Host Name: localhost
User Name: mysql
Password: <ja, habe ich eines unter Yast eingestellt und auch hier eingegeben>
Server für Inno-DB habe ich nicht installiert.
Bei meiner Suche zur Problemlösung habe ich mich vor allem auf diesen (http://www.debianforum.de/forum/viewtopic.php?t=24449&postdays=0&postorder=asc&start=0&sid=9deec75279e85957cc030e06550b2de7) Thread im debian-Forum bezogen.

Sehr viel Erfahrung im Umgang mit Linux habe ich bisher nicht. Von daher versuche ich nach Möglichkeit alles klicki-bunti über yast oder ähnliches zu erledigen http://forum2.ingame.de/diablo2/images/smilies/angel.gif

Edit: Wie in diesem (http://www.linuxforen.de/forums/showthread.php?t=217882) Thread beschrieben, sollte ich mal
mysql_install_db --user=mysql ausführen. Doch das brachte nichts. Die Anweisungen, die in den Informationen angegeben waren, habe ich versucht auszuführen, aber sie schlugen fehl.

linux:~ # mysqladmin -u root password 'tolles Passwort'
mysqladmin: connect to server at 'localhost' failed
error: 'Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)'
Check that mysqld is running and that the socket: '/var/lib/mysql/mysql.sock' exists!
linux:~ # mysqladmin -u root -h linux.hause password 'tolles Passwort'
mysqladmin: connect to server at 'linux.hause' failed
error: 'Lost connection to MySQL server during query'

MiGo
11.08.07, 10:31
070810 18:56:55 Fatal error: Can't open privilege tables: Table 'mysql.host' doesn't exist
Heisst, dass die (bzw. eine der) Tabelle(n ), in denen Mysql seine Berechtigungen aufbewahrt, nicht zu finden ist.
Mehrere Lösungen dazu:
a) Brachial und unsicher: einfach mit "mysqld_safe --skip-grant-tables" starten. Damit wird die Rechteverwaltung ausgeschaltet.
b) mysql komplett deinstallieren und neu installieren. Wahrscheinlich hast du beim Rumbasteln derartig viel verstellt, das das die schnellste Methode ist.

Ausserdem sollte mysql eigentlich ein initscript haben ("/etc/init.d/mysqld start"; es per Hand zu starten ist somit potentiell keine gute Idee.

pferdefreund
11.08.07, 11:01
muß man eventuell wie bei postgresql erst mal ne Masterdatenbank
ala initdb anlegen ?

Juergen2005
11.08.07, 11:33
Hallo Toast,

Das Problem hatte ich seinerzeit auch. Wenn ich richtig zurück denke, dann gibt es unter Suse 9.1 ein Skript für die erstmalige Initialisierung von mysql.

Schau mal in der Dokumentation (/usr/share/doc/packages/mysql) rein! Dort sollten die ersten Schritte detailliert beschrieben sein.

Gruß
Jürgen

Toast78
11.08.07, 11:47
Habe noch was herausgefunden :D
Da ich
mysql_install_db --user=mysql
als root ausführte, hatte auch der Ordner /var/lib/mysql/mysql und dessen Dateien komischerweise als Eigentümer root. Das verwundert mich vor allem, da ja der Parameter --user=mysql angegeben wurde. Was macht also dieser Parameter? :)
Nun (nachdem ich Eigentümer und Gruppe umgestellt habe) konnte ich zwar mysqld_safe zwar starten, allerdings bekomm ich dann in mysqlcc folgende Fehlermeldung:
[Linux] ERROR 1045: Access denied for user: 'mysql@localhost' (Using password: YES)

Toast78
11.08.07, 13:50
OK, ich habs rausgefunden: Dem mysql-User wurde wohl nach Installation der Datenbank wohl wieder das Passwort genommen. Insofern habe ich in der Konsole das Passwort bei dem Server auch gelöscht. Funktioniert also. Der Rest der jetzt kommt (und ich mangels Grundlagenkenntnis nicht verstehe :)), gehört hier wohl nicht mehr hin ;)

Ich danke auch Juergen2005 für den Tipp, da ich so rausgefunden habe, wie ich mysqld in den Bootvorgang von Linux einbinde.
@MiGo: Zum Tipp b) kann ich eigentlich nur sagen, dass ich lieber mehr installiere, als zu wenig. Und bei der Installation was verbiegen... geht eigentlich auch schlecht, da ich die Paketinstallation von yast benutzt habe.

Insofern möchte ich mich schonmal bedanken.