Übernahme eines Debian Etch-Webservers unter MySQL.
Normalerweise starte, stoppe und starte ich msyql neu mit:
/etc/init.d/mysql restart
Aus irgendeinem Grund erhalte ich bei diesem Setup Folgendes:
: ~ # /etc/init.d/mysql stop
Stoppen des MySQL-Datenbankservers: mysqld ist fehlgeschlagen!
Der MySQL-Prozess läuft einwandfrei:
:~# ps aux | grep mysql
root 2045 0.0 0.1 2676 1332 ? S Jun25 0:00 /bin/sh /usr/bin/mysqld_safe
mysql 2082 0.6 10.7 752544 111188 ? Sl Jun25 18:49 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --skip-external-locking --port=3306 --socket=/var/run/mysqld/mysqld.sock
root 2083 0.0 0.0 1568 504 ? S Jun25 0:00 logger -p daemon.err -t mysqld_safe -i -t mysqld
root 11063 0.0 0.0 2856 716 pts/0 S+ 17:29 0:00 grep mysql
Ich bin mir sicher, dass es einige wirklich einfache Möglichkeiten gibt, aber ich möchte auch verstehen, was los ist. Warum funktioniert der typische Weg bei mir nicht?
UPDATE BEARBEITEN als Update:
JBRLSVR001:/var/log/mysql# mysqladmin shutdown
JBRLSVR001:/var/log/mysql# dpkg --list mysql\*
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed
|/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad)
||/ Name Version Description
+++-============================================-============================================-========================================================================================================
un mysql-client <none> (no description available)
un mysql-client-4.1 <none> (no description available)
ii mysql-client-5.0 5.0.32-7etch8 mysql database client binaries
ii mysql-common 5.0.32-7etch8 mysql database common files (e.g. /etc/mysql /my.cnf)
un mysql-common-4.1 <none> (no description available)
ii mysql-server 5.0.32-7etch8 mysql database server (meta package depending on the latest version)
un mysql-server-4.1 <none> (no description available)
ii mysql-server-5.0 5.0.32-7etch8 mysql database server binaries
Das Herunterfahren von mysqladmin funktioniert, aber ich bin immer noch gespannt, warum die Befehle /etc/init.d/mysql nicht funktionieren.
/tmp/mysql.sock
statt/var/run/mysqld/mysqld.sock
. Daher gab das Skript der Debian-Betreuer stillschweigend einen Fehler aus. Sie müssen nursocket=
in der/etc/mysql/debian.cnf
Antworten:
sollte funktionieren, um den Server herunterzufahren.
Ich sehe zwei wahrscheinliche Möglichkeiten:
Was
dpkg --list mysql\*
heißt das?Was sagt /var/log/mysql.err? Oder die anderen MySQL-Protokolle?
BEARBEITEN:
So hat es
mysqladmin shutdown
funktioniert?Demnach ist das mysql-server-Paket installiert (mysql-server-5.0; das mysql-server-Paket ist wahrscheinlich nur ein Stub). Also haben sie vielleicht drüber installiert? Laufen
debsums mysql-server-5.0
könnte Ihnen mehr sagen.dpkg --listfiles mysql-server-5.0
könnte auch helfen ...Was ist eigentlich in /etc/init.d/mysql? Ich habe diese spezielle Version des Pakets nicht überprüft, aber sie sollte versuchen zu verwenden
mysqladmin shutdown
... Vielleicht hast du Glück und sie haben das nur kaputt gemacht ...quelle
Warum passiert das?
Dies ist ein häufiges Problem, wenn Sie einen MySQL-Import durchführen und die MySQL-Datenbank selbst überschreiben, z. B. wenn Sie eine Wiederherstellung aus einer MySQL-Sicherung durchführen.
Dies ist eine gute Sache: Sie möchten wahrscheinlich alle Ihre MySQL-Benutzer, Berechtigungen usw. sichern - aber es kann Chaos mit Dingen wie dem Benutzer debian-sys-maint anrichten, der zum sauberen Herunterfahren von MySQL verwendet wird.
Obwohl diese neue Datenbank möglicherweise sowohl das root-Passwort als auch das debian-sys-maint-Passwort ändert, wird das erwartete debian-sys-maint-Passwort in /etc/mysql/debian.cnf natürlich nicht automatisch geändert. In der Tat, wenn Sie nicht auch diese Datei gesichert haben, wissen Sie wahrscheinlich nicht einmal mehr, was dieses Passwort ist!
Zurücksetzen des MySQL-Root-Passworts (optional)
Das wichtigste zuerst. Wenn das mysql-root-Passwort zwischen alten und neuen Servern unterschiedlich war, können Sie es mit mysqladmin reparieren:
Wenn Sie jedoch mysql-server apt-get installiert haben, wurden Sie wahrscheinlich zur Eingabe des neuen mysql-root-Passworts aufgefordert, und Sie haben wahrscheinlich das gleiche Passwort verwendet, das Sie zuvor verwendet haben.
Korrigieren Sie das debian sys maint Passwort.
Suchen Sie nun das debian sys maint-Passwort, das Sie bei der Installation auf dem neuen Server von debian erstellt haben. (Sie benötigen sudo, da dies eine stark geschützte Datei sein sollte.)
Melden Sie sich jetzt mit dem oben festgelegten root-Passwort bei mysql an:
Setzen Sie das Passwort für den Benutzer debian-sys-maint zurück und vergessen Sie nicht, die Berechtigungen zu löschen:
Testen Sie, ob es funktioniert:
quelle
2 weitere Hinweise:
Dies zeigt Ihnen die Befehle, die vom Init-Skript ausgeführt werden.
Wenn Sie die Paket-Debsums installieren, können Sie testen, welche Pakete geändert wurden (Verify ist auch für RPM verfügbar, IMHO funktioniert jedoch besser).
quelle
"Access denied for user 'debian-sys-maint'@'localhost'"
, diesen Befehl auszuführen , was absolut richtig war: Meine MySQL-Datenbank hatte noch keine Berechtigungen zugewiesen , hatte alsomysql stop
nicht die Berechtigungen in der Datenbank selbst, um herunterzufahren. Ein Handbuchmysqladmin shutdown
hat einwandfrei funktioniert.wird auf jeden Fall funktionieren
quelle
Vorausgesetzt, das Paket ist etwas seltsam, könnte das Problem die PID-Datei sein. Ich vermute, dass die neuen Pakete oder die kompilierte Installation / var / run / mysql / oder was auch immer unter Debian Standard ist, für die PID-Datei, in die geschrieben werden soll, nicht erstellt haben oder das Init-Skript an einer anderen Stelle nach der mysqld.pid-Datei sucht. Wenn Sie das Problem mit der Init / PID-Datei beheben können, sollten die Dinge wahrscheinlich funktionieren.
quelle
Das mysql shutdown-Skript verwendet den Benutzer debian-sys-maint, um mysqladmin shutdown auszuführen, indem es das Kennwort für den Benutzer aus /etc/mysql/debian.cnf liest. Sie sollten überprüfen, ob diese Datei vorhanden ist und dass Sie mysqladmin shutdown als dieser Benutzer ausführen können.
quelle
Sie könnten es technisch beenden mit:
Aber Sie könnten Daten verlieren?
Fragen Sie besser jemanden unter http://www.serverfault.com
quelle
Bei Verwendung von "pkill mysql" gehen wahrscheinlich auch Daten verloren, insbesondere wenn es als "pkill -9" aufgerufen wird :(
Ich würde auch empfehlen, 'sh -x' zu verwenden, um zu sehen, was das Problem mit dem Init-Skript sein könnte, und Sie können auch einen Blick in die Fehlerprotokolle für MySQL werfen (/ var / log / mysql oder / var / lib / mysql, je nach konfiguration) um zu sehen, ob es auf einer wirklich lang laufenden abfrage hängt oder so und somit noch nicht bereit ist, anmutig ganz zu kündigen.
quelle
Um dem Kommentar zu Ihrer Frage nachzugehen, schreibe ich eine vollständige Antwort auf:
Das Problem ist, dass der Standard-Socket
/tmp/mysql.sock
mit der MySQL-Quelle und/var/run/mysqld/mysqld.sock
mit Debian-Binärdateien arbeitet.Die Lösung ist der Socket - Pfad zu beheben in
/etc/mysql/debian.cnf
, durch die gute Bereitstellungsocket=
. Oder indem Sie es behalten, aber dann das ändern/etc/mysql/my.cnf
.So habe ich das herausgefunden:
/etc/init.d/mysql
Wenn dort die Meldung "Fehlgeschlagen" angezeigt wird, haben Sie die folgende Zeile:echo -e "$ps_alive processes alive and '$MYADMIN ping' resulted in\n$ping_output\n" | $ERR_LOGGER -p daemon.debug
Das hat mich darauf hingewiesen
$MYADMIN ping
, was istmysqladmin --defaults-file=/etc/mysql/debian.cnf ping
. Die Ausführung dieses Befehls endet am:Also habe ich mir das angeschaut
/etc/mysql/debian.cnf
und herausgefunden, dass es sich um eine schlechte Steckdose handelt.quelle
benutze den folgenden Befehl:
$ mysqladmin shutdown
Dies sollte in Ihrem Fall im Verzeichnis / usr / bin verfügbar sein.
quelle
Sie müssen ein Superuser sein, um mysql (und die meisten anderen Dienste) auf debian zu stoppen.
Ich bin mir nicht sicher, ob Sie es bereits sind oder nicht
quelle