MySQL start schlägt fehl - mysqld läuft aber trotzdem

Software besorgen und anwenden
Antworten
Nachricht
Autor
Benutzeravatar
Libby
Beiträge: 16
Registriert: 25. Okt 2004 15:03

MySQL start schlägt fehl - mysqld läuft aber trotzdem

#1 Beitrag von Libby » 13. Nov 2004 21:08

Hallo allerseits!

Ich habe vor kurzem MySQL installiert (SuSE 9.0). Hat einwandfrei funktioniert - bis ich ein Paßwort für den root-User vergeben habe. Wenn ich jetzt MySQL starte, passiert folgendes:

Code: Alles auswählen

linux:/etc/init.d # ./mysql start
Starting service MySQL
                                                                                         failed
Der Server scheint aber trotzdem zu laufen:

Code: Alles auswählen

linux:/etc/init.d # ./mysql status
Checking for service MySQL:                                                              running
... denn ich kann ganz normal auf die Datenbank zugreifen:

Code: Alles auswählen

linux:/etc/init.d # mysql --password
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7 to server version: 4.0.15

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> SHOW DATABASES;
+----------+
| Database |
+----------+
| mysql    |
| test     |
+----------+
2 rows in set (0.00 sec)

mysql>
Da müßte doch eigentlich ein Fehler in /etc/init.d/mysql sein, oder? Weil der Server wird ja einwandfrei gestartet, aber das Startskript denkt, der Start sei fehlgesachlagen ... kann das evtl. mit einer ping-Routine oder sowas zusammenhängen, für die der User evtl. sein Paßwort eingeben müßte?

klopskuchen
prolinux-forum-admin
Beiträge: 1444
Registriert: 26. Jun 2004 21:18
Kontaktdaten:

#2 Beitrag von klopskuchen » 13. Nov 2004 22:59

Es wäre möglich das der Server bereits beim Durchlaufen der Startskripte gestartet
wurde und das Skript nun anstatt einer "vernünftigen" Meldung nur ein failed ausgibt.
Wenn du das Skript nicht extra vor dem Startversuch ausführbar gemacht hast, wird es
wohl so sein. Mach mal nach dem Booten ein
nmap localhost
oder eben
./mysql status
dann siehst du ob er schon läuft oder nicht.

MfG, Klopskuchen
When all else fails, read the instructions .

Benutzeravatar
hjb
Pro-Linux
Beiträge: 3264
Registriert: 15. Aug 1999 16:59
Wohnort: Bruchsal
Kontaktdaten:

#3 Beitrag von hjb » 14. Nov 2004 14:14

Hi!

Unter Fedora habe ich genau das gleiche gesehen. Im Init-Skript ist irgendein idiotischer Timeout, und wenn mysqld lange zum Starten braucht, dann denkt das Skript, es ist fehlgeschlagen. Abhilfe kann man schaffen, indem man ein eigenes ganz simples Init-Skript macht oder das bestehende ändert. Warum mysqld so lange zum Start braucht, habe ich nicht analysiert.

Gruß,
hjb
Pro-Linux - warum durch Fenster steigen, wenn es eine Tür gibt?

Benutzeravatar
Libby
Beiträge: 16
Registriert: 25. Okt 2004 15:03

#4 Beitrag von Libby » 14. Nov 2004 14:23

@klopskuchen: Der Server wird nach dem Booten nicht austomatisch gestartet. Das hab ich auch gedacht, und als erstes ausprobiert ...

@hjb: Was muß ich denn da ändern? Ich bin zwar wirklich kein Linux-Noob (mehr ;-), aber in init-Skripts hab ich bisher nicht rumgecoded ... Aber das mit der langen Zeit zum Starten stimmt tatsächlich. Ich habe aber bisher noch keine MySQL-Server gesehen, der nicht lange zum Starten gebraucht hätte!

Ist das evtl. folgender Code aus /etc/init.d/mysql:

Code: Alles auswählen

for i in 1 2 3 4 5 6; do
  sleep 1
  $MYADMIN -u %mysql_daemon_user ping &>/dev/null && i='' && break
done
?

Weil wenn ich den befehl manuell eingebe, wenn der Server läuft, passiert folgendes:

Code: Alles auswählen

linux:/etc/init.d # mysqladmin -u root ping
mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user: 'root@localhost' (Using password: NO)'
Folgendes geht aber:

Code: Alles auswählen

linux:/etc/init.d # mysqladmin -u root --password ping
Enter password:
mysqld is alive
Kann man das nicht einstellen, daß root ein Paßwort hat (vernünftigerweise!!!), aber ohne Paßwort pingen darf? Damit wäre das Problem ja schon gelöst ... man könnte natürlich das root-Paßwort in der Init-Datei in dem Befehl mittels --password="xyz" angeben, aber das würd ich ungern machen ...

Benutzeravatar
Libby
Beiträge: 16
Registriert: 25. Okt 2004 15:03

#5 Beitrag von Libby » 14. Nov 2004 14:59

Ich hab's jetzt doch mal ausprobiert und in /etc/init.d/mysql was verändert.

in /etc/my.cnf hab ich mal das root-Paßwort reingeschrieben:

Code: Alles auswählen

# The following options will be passed to all MySQL clients
[client]
password  = xyz
port      = 3306
socket    = /var/lib/mysql/mysql.sock
Das müßte doch eigentlich klargehen, weil nur der user mysql Zugriff auf die Datei hat:

Code: Alles auswählen

-rw-------    1 mysql    daemon       4896 2004-11-14 14:50 my.cnf
In /etc/init.d/mysql hab ich die Schleife so geändert:

Code: Alles auswählen

for i in 1 2 3 4 5 6; do
  sleep 1
  $MYADMIN ping &>/dev/null && i='' && break
done
Jetzt funktioniert alles einwandfrei ... kann man das so lassen?

klopskuchen
prolinux-forum-admin
Beiträge: 1444
Registriert: 26. Jun 2004 21:18
Kontaktdaten:

#6 Beitrag von klopskuchen » 14. Nov 2004 15:33

>Jetzt funktioniert alles einwandfrei ... kann man das so lassen?
Wenn es funktioniert... ;)
Einziges Manko wäre ein evtl. Auslesen des Passwortes aus /etc/mysql.conf
durch lokale Benutzer, je nach Dateirechten.

MfG, Klopskuchen
When all else fails, read the instructions .

Benutzeravatar
Libby
Beiträge: 16
Registriert: 25. Okt 2004 15:03

#7 Beitrag von Libby » 14. Nov 2004 17:34

Wie gesagt, nur der user mysql hat Lese- und Schreibrechte auf diese Datei. Als normaler User kann ich ja nicht drauf zugreifen!

Antworten