MySQL
Beispiel und Anleitungen rund um MySQL
Rewrite-Rules: Apache vs Nginx
1Bei dem Apache Webserver wird das URL-Handling (Rewrite-Rules) via .htaccess gesteuert, sobald sich eine Datei mit diesem Namen in einem Verzeichnis befindet, werden die darin enthaltenen Befehle vom Apache umgesetzt. Da dieses Verfahren jedoch voraussetzt, dass alle Verzeichnisse zuvor auf eine solche Datei geprüft, diese anschließend eingelesen und verarbeitet werden muss, macht es Sinn wie z.B. beim Nginx Webserver diese in die Konfiguration des Webs aufzunehmen. Leider ist die Syntax und Logik dieser beiden Rewrite-Rules nicht kompatibel, daher folgt eine Einführung in dieses Thema … außerdem habe ich auf github.com/voku/ meine kompletten Konfigurationsdaten für Nginx + PHP + MySQL hochgeladen.
Erklärung: einfache Weiterleitung
Apache:
Redirect More >
MySQL: Zahl in Datum umwandeln
1Falls jemand mal z.B. einen Int-Wert in ein Datum umwandeln muss, kann “CONVERT” bzw. “CAST” weiterhelfen. Auch wenn man eigentlich die Datenbank im Vorhinein so gestalten sollte, dass “date” / “datetime” / … / als Datentyp verwendet wird.
Beispiel-Datenbank: CREATE TABLE `lall` ( `Id` int(11) NOT NULL AUTO_INCREMENT, `IntDate` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`Id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO `lall` VALUES (1,201001); INSERT INTO `lall` VALUES (2,201002); INSERT INTO `lall` VALUES (3,201003); INSERT INTO `lall` VALUES (4,0); INSERT INTO `lall` VALUES (5,201011); INSERT INTO `lall` VALUES (6,201012); INSERT INTO `lall` VALUES (7,201205);
SQL: SELECT * FROM lall WHERE ((CONVERT(CONCAT(IntDate, '01'), datetime))>NOW() - INTERVAL 12 MONTH OR IntDate=0) More >
perror – Explain Error Codes für MySQL in der Shell
1Info: http://dev.mysql.com/doc/refman/5.0/en/perror.html
Ausgabe:
OS error code 1: Operation not permitted OS error code 2: No such file or directory OS error code 3: No such process OS error code 4: Interrupted system call OS error code 5: Input/output error OS error code 6: No such device or address OS error code 7: Argument list too long OS error code 8: Exec format error OS error code 9: Bad file descriptor OS error code 10: No child processes OS error code 11: Resource temporarily unavailable OS error code 12: Cannot allocate memory OS error code 13: Permission denied OS error code 14: Bad address OS error code 15: Block device required OS error code 16: Device or resource More >MySQL-Server optimieren
10Link: rackerhacker.com/mysqltuner/ – mysqltuner www.day32.com/MySQL/ – tuning-primer
Beispiel:
Wenn wir unserem MySQL-Server z.B. 64 MB zur Verfügung stellen möchten ->
key_buffer = 12M + (read_buffer = 4M + sort_buffer = 4 M) x max_connections = 64 MB
12 + (4 + 4) x max_connections = 64
Formel nach max_connections umstellen
max_connections = (RAM – key_buffer) : (read_buffer + sort_buffer)
max connections = (64 – 12) : (4 + 4)
max_connections = 52 : 8
max_connections = 6,5
benötigen wir mehr als 6,5 max_connections, müssen wir More >
Webseiten beschleunigen – Übersicht
8Der Artikel beschreibt, wie man seine Webseite bzw. seinen Server analysiert und optimiert um Performance zu gewinnen, Ladezeit zu reduzierten bzw. Traffic einzusparen. Man kann einiges an Performance gewinnen, indem man z.B. Bilder im richtigen Format abspeichert bzw. komprimiert, CSS- / JS-Dateien kombiniert und ebenfalls komprimiert oder auch bestimmt Daten vorkomprimiert zur Verfügung stellt.
1.) Webseiten Analyse 1.1) Webseiten Benchmark
2.) Komprimierung 2.1) Bilder komprimieren 2.1.1) Bilder Sprites 2.1.2) PNG-Bilder komprimieren 2.1.3) JPEG-Bilder komprimieren 2.1.4) Bilder komprimieren – Online 2.2) JavaScript/CSS komprimieren 2.2.1) JavaScript/CSS komprimieren – serverseitig 2.2.2) JavaScript/CSS komprimieren – Online 2.3) Apache gzip-Kompression 2.3.1) Aktiviere More >
GreenSQL – MySQL Firewall
0GreenSQL ist eine Open-Source-Datenbank-Firewall, um Datenbanken von SQL-Injection-Attacken zu schützen. Diese arbeitet als Proxy für SQL-Kommandos und hat eine eingebaute MySQL Unterstützung. Die Logik beruht auf der Auswertung von SQL-Befehlen, mit Hilfe eines Scoring-Risiko-Matrix sowie Sperrung bekannt db Verwaltungs-Befehle.
GreenSQL arbeitet als Reverse Proxy für MySQL-Verbindungen. Dies bedeutet, dass du dich anstatt direkt mit den MySQL-Server, zuvor mit GreenSQL verbindest. GreenSQL analysiert die SQL-Abfragen und wenn sie sicher sind, werden diese an den MySQL-Server durch-gereicht.
greenSQL
HowTo: Wie installiere ich die MySQL Firewall?1. Download der Software
Das passende Paket von dieser Webseite More >
MySQL-Server beschleunigen
0Nutze Google’s perftools um die Geschwindigkeit deines MySQL-Server zu erhöhen.
Das Google Perftools, insbesondere tcmalloc (Thread Caching Malloc), kann helfen z.B. den MySQL-Server zu beschleunigen…
TCMalloc ist schneller als die glibc 2.3 malloc (Wiki). Die Geschwindigkeitsvorteile durch die verbesserte Speicherzuordnung, kannst du wie folgt in MySQL integrieren.
Vorausgesetzt du nutzt Debian 5 (Lenny) oder neuer… fügen wir als erstes neue Repositories in der sources.list ein.
echo 'deb http://dotdeb.netmirror.org/ stable all' >> /etc/apt/sources.list echo 'deb-src http://dotdeb.netmirror.org/ stable all' >> /etc/apt/sources.listund aktualisieren ggf. den MySQL-Server auf Version 5.1
apt-get update aptitude install mysql-server-5.1 aptitude install libtcmalloc-minimal0Seit den More >
MySQL root Passwort zurücksetzen
2Wer sein root MySQL-Server Passwort vergessen hat, kann es mit folgendem HowTo wieder zurücksetzen…
füge folgenden Inhalt in eine neue Datei ein… ->
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MeinNeuesPasswort');"nun müssen wir den MySQL-Server stoppen ->
/etc/init.d/mysql stopund den MySQL-Server mit dem neuen Passwort starten ->
mysqld_safe --init-file=/PFADZUMFILE/FILEnun nur noch ein restart des MySQL-Servers und Fertig…
/etc/init.d/mysql restartalternativ kann man dies auch umgekehrt machen…
wir müssen den MySQL-Server wieder stoppen ->
/etc/init.d/mysql stopdann den MySQL Daemon im safe-Mode starten ->
mysqld_safe --skip-grant-tablesper root in MySQL einloggen… ->
mysql --user=root mysqlund folgende Kommandos ausführen ->
UPDATE USER SET More >
0 */2 * * * wget -q -O /dev/null[…] 1 month ago