Benutzer-Werkzeuge

Webseiten-Werkzeuge


de:sysadmin:tools:mysql

MySQL Schmierzettel

Basics: select, update

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";

Query-Sammlung

Regexp - IP-Adressen

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.]*';

Paypal-Transaktionscodes aus einer OTRS-Queue

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

Passwort

Allgemein: wenn man ein MySQL-Passwort sucht, ist es vielleicht dort abgelegt:

% cat .my.cnf
[client]
host=dbserver
password=Geheim

Passwort Recovery (root darf das)

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


Performance

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

Performance 2

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)


1) Den Tipp bekam ich vom Sternen-Kolonist auf tauceti.net, bevor er es selber bloggte
de/sysadmin/tools/mysql.txt · Zuletzt geändert: 2010-08-02 21:58 von hella

Seiten-Werkzeuge