Beispiel: Mediawiki Datenbank
echo "show tables;select * from user where user_name='Abc';" | mysql --user wikiuser --host dbserver --password=Geheim --database=wikidb
die SQL-Statements kann man natürlich auch in eine Datei schreiben und mit < reinleiten:
mysql --user wikiuser --host dbserver --password=Geheim --database=wikidb < tabelleundbenutzerzeig.sql
% mysql mysql> show databases; mysql> use wikidb; mysql> show tables; mysql> describe Users;
anzeigen
mysql> select user_name,user_email from user where user_name='Abc';"
ändern
mysql> update user set user_email = "Abc@xxx.x" where user = "Abc";
vielleicht gibt es ja noch eine elegantere Methode, aber dieses SQL-Statement findet IP-Adressen-ähnliche Konstrukte:
select servername,serverip from servertable where serverip REGEXP '[0-9.][0-9.]*';
Das Ticketsystem OTRS hatte bei einigen Mails wg. Umlaut-Verdauungsproblemen ein größere Anzahl von Dateien als "problem-email" in seinem Verzeichnis mail-spool
abgelegt. Die Frage war: Sind dafür Tickets hinterlegt worden oder nicht?
diese Zeile (wenig elegant), zieht mir eine Liste der "Paypal-Transaktionscodes" aus der Datenbank (die Queue ID 19 ist hier die Paypal-Queue).
echo "select a.a_from,a.a_body from article as a,ticket as t where a.ticket_id = t.id and t.queue_id=19;" | mysql -u root -pPASSWORT --database=otrs | awk -F'Transaktionscode: ' '{print $2}' | sed 's/\\n\\n\\n..*//' | sort > /tmp/db.transaktionscode
Die gewonnene Textdatei habe ich dann auf dem OTRS-Server mit dem Ergebnis von
mail-spool # grep "Transaktionscode: [^<]" * | awk '{print $8}' > /tmp/err.mail.transaktionscodes
verglichen → puh, anscheinend sind doch alle Mails im Ticketsystem
Allgemein: wenn man ein MySQL-Passwort sucht, ist es vielleicht dort abgelegt:
% cat .my.cnf [client] host=dbserver password=Geheim
mysqld stoppen und mit --skip-grant-tables
starten
Mit MySQL verbinden:
% mysql -u root
Folgende Zeilen im MySQL-Client eingeben:
mysql> UPDATE mysql.user SET Password=PASSWORD('neuespasswort') WHERE User='root'; mysql> FLUSH PRIVILEGES;
Quelle: http://wiki.preshweb.co.uk/doku.php?do=show&id=mysql%3Aresetrootpassword
Zuerst mal rausfinden, was langsam ist:
Das Log für die Langsamen Querys kann man u.a. in der my.cnf einschalten
# Log slow queries log_slow_queries=/var/log/mysql/slowquery.log long_query_time = 2 log_long_format
Will man eine "Top-Ten der langsamsten Queries":
mysqldumpslow slowquery.log -t 10 -s t
Um die Auslastung schnell in bunten Kurven zu sehen, empfehle ich Jet Profiler. Die freie Version zeigt nicht alles an, aber für einen Überblick ist das Tool dennoch hilfreich.1)
gilt für alle Tipps, Tricks & Spickzettel:
dies sind einfache, teils banale Notizen für meinen persönlichen Gebrauch,
die hier eher zufällig auch öffentlich lesbar sind
(vielleicht hilft es ja jemandem weiter). Verwendung auf eigene Gefahr
Fehler-Hinweise, Dankesschreiben , etc. bitte an: web.1611@unixwitch.de
weitere Tools / Spickzettel