MySQL Prozessliste, ohne ruhende Prozesse, anzeigen

Leider erlaubt MySQL keine Filter für SHOW PROCESSLIST. Hierdurch wird die Übersicht der laufenden Prozesse schnell unübersichtlich.

Ab PHP 5.1 kann ich die laufenden MySQL Anfragen mit dem folgenden Befehl anzeigen:

SELECT * FROM information_schema.processlist;

Hierbei werden alle Prozesse, genau wie mit SHOW PROCESSLIST angezeigt, es ist aber auch eine Filterung möglich. Mit dem folgenden Befehl können alle laufenden MySQL Anfragen ohne die ruhenden Prozesse angezeigt werden.:

SELECT * FROM information_schema.processlist WHERE command != 'Sleep';

Die Ausgabe kann auch sortiert werden und weiter eingeschränkt werden. Mit dem folgenden Befehl werden dir MySQL Prozesse nach laufzeit sortiert und nur die Prozesse angezeigt die länger als zwei Sekunden laufen.:

SELECT user, time, state, info FROM information_schema.processlist WHERE command != 'Sleep' AND time >= 2 ORDER BY time DESC, id;

Die zur verfügung stehenden Felder sind ID, USER, HOST, DB, COMMAND, TIME, STATE, INFO, TIME_MS, STAGE, MAX_STAGE, PROGRESS, MEMORY_USED, EXAMINED_ROWS, QUERY_ID, INFO_BINARY und TID.

ColumnBeschreibung
ID Verbindungskennung
USERDer Benutzer der diesen Prozess gestartet hat
HOSTServer von dem die Verbindung eingeht
DBBenutzte Datenbanbk oder NULL wenn keine
COMMAND Art des ausgeführten Befehls
TIME Sekunden, seit der dieser Prozess in seinem aktuellen Zustand ist
STATE Aktueller Status des Prozesses
INFO Anweisung, die in diesem Prozess ausführt wird , oder NULL wenn keine
TIME_MSZeit in Millisekunden seit dem sich der Prozess im aktuellen Status befindet
STAGE Die Phase, in der sich der Prozess derzeit befindet
MAX_STAGE Die maximale Anzahl von Stufen
PROGRESS Der Fortschritt des Prozesses in der aktuellen Phase (0-100%)
MEMORY_USED Speicher in Bytes, der von diesem Prozess verwendet wird
EXAMINED_ROWSTabellenzeilen die von diesem Prozess gelesen wurden.
Nur bei UPDATE-, DELETE- und ähnliche Anweisungen. Bei SELECT- und ähnlichen Anweisungen bleibt der Wert Null
QUERY_IDID.
INFO_BINARY Informationen zu Binärdaten

MySQL root Passwort vergessen 2

Da es mehrere Wege gibt ein neues root-Passwort für eine MySQL-Datenbank zu setzen, hier ein zweiter weg:

recover.sql Inhalt

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('Anminpasswort');

anschließend die Datenbank stoppen:

/etc/init.d/mysql stop

Das Passwort zurücksetzen:

mysqld_safe --init-file=~/recover.sql

Und die MySQL Datenbank neu starten:

/etc/init.d/mysql start

anschließend die Datei „recover.sql“ löschen.
Das neue Passwort lautet jetzt „Anminpasswort“. (natürlich ohne die „)

Achtung: bei Systemen mit Plesk lautet der Benutzer nicht ‘root’ sondern ‘admin’, in diesem fall dort muss das Wort ´root´ in der Datei recover.sql durch das Wort ´admin´ ausgetauscht werden.

MySQL Shellausgaben schöner anzeigen

Leider scrollt die Ausgaben von MySQL Befehlen viel zu schnell aus der Shell…

Zum Glück lässt sich dies das wegscrollen der MySQL-Ausgaben einfach vermeiden, indem wir uns die MySQL-Ausgaben in einen entsprechenden Texteditor übergeben lassen.

mysql> pager vim
PAGER set to 'vim'

abschalten geht einfach mit

mysql> nopager

MySQL root Passwort vergessen (eins)

Es gibt viele Wege das MySQL root-Passwort neu zu vergeben. Hier die erste einfache Anleitung um das Passwort zu überschreiben.:

1.) MySQL Datenbank stoppen und anschließend ohne Netzwerkunterstützung und ohne Recheverwaltung neu starten

/etc/init.d/mysql stop
/usr/bin/mysqld_safe --skip-grant-tables --skip-networking &

2.) Zur MySQL Datenbank verbinden und in der Tabelle user in der Datenbank mysql bearbeiten.

mysql -u root
use mysql;
UPDATE user SET Password=PASSWORD("mein neues Passwort") WHERE User="root";
exit;

Alternativ kann hier das Passwort auch direkt mit dem MySQL-Shel-Befehl gesetzt werden:

mysql -c "mysqladmin --user root password 'mein neues Passwort'"

3.) MySQL beenden und den regulären MySQL Dienst wieder starten:

/etc/init.d/mysql stop
/etc/init.d/mysql start

Weitere Wege das root-Passwort für die MySQL Datenbank neu zu vergeben: