Tag-Archive for » MySQL «

DB-Frontends mit Dadabik Teil 1 – Installation

Wer von eine Datenbank wie zum Beispiel Access auf MySQL umsteigt, wird ein gutes DB-Frontend zum erstellen und pflegen von Datenbanken und Tabellen schmerzlich vermissen. Bei MySQL wird dafür in aller Regel phpMyAdmin benutzt.

Das ist ein mächtiges Tool mit dem Sie wirklich alle Einstellungen der Datenbank im Griff haben. Und das sind unter Umständen einige zuviel, besonders, wenn auch Endbenutzer mit dem Frontend arbeiten sollen. Ein falscher Klick kann den GAU für die gesamte Datenbank einleiten.

Bevor man über ein eigenes Frontend nachdenkt, was mit viel Aufwand verbunden ist, sollte man sich das Open Source Den Database Interface Creator Dadabik anschauen. Sie können Dadabik kostenlos downloaden und die ZIP-Datei entpacken. In dem Verzeichnis, in das die Programmdateien entpackt werden, finden Sie einen Ordner program_files, den Sie in ein eigenes Verzeichnis unterhalb des Rootverzeichnisses Ihres Webservers kopieren. Als Name wäre dadabik sinnvoll, dann können Sie die Beispiele im Artikel einfacher nachvollziehen.

Dadabik braucht für korrekte Funktion die PHP-Option magic_quotes_gpc, über die einfache Anführungszeichen (Quotes) automatisch maskiert werden. Sie können die Einstellungen mit der PHP-Funktion phpinfo() abfragen. Sollte diese Option aus sein, können Sie das in der PHP-Konfigurationsdatei php.ini ändern. Danach muss der Webserver einmal neu gestartet werden, damit die Einstellung übernommen wird.

Da diese Einstellung für alle virtuellen Server des gesamten Webservers gilt, kann das dazu führen, dass andere PHP-Anwendungen, die mit der Einstellung nicht sauber arbeiten können, nicht mehr korrekt laufen. In solchen Fällen kann man die Einstellung mit dem Befehl php_value magic_quotes_gpc on in einer .htaccess-Datei im Dadabik-Verzeichnis nur für dies Verzeichnis wirksam werden lassen.

Im zweiten Teil des Artikels werden die Konfiguration und die Installation von Dadabik gezeigt.

WordPress 3.1 vor der Tür

Nach Plan soll das neue WordPress 3.1 am 15. Dezember mit aufgeräumter Benutzeroberfläche und verbessertem Code zum Download bereit stehen.

Der Update bringt weniger neue Funktionen und konzentriert sich auf die Verbesserung des Vorhandenen. Die Oberfläche wurde im Admin-Bereich stark überarbeitet. Auch im Frontend gibt es jetzt eine bei Bedarf einblendbare Admin-Leiste, die den Aufruf von Admin-Funktionen direkt auf der Seite erlaubt. Auch die Funktionen für Artikel- und Seiten-Templates wurden überarbeitet, ebenso auch die innere Verlinkung.

WordPress 3.1 wird die letzte Version des Blogs sein, die unter PHP 4 läuft. Alle nachfolgenden Releases benötigen mindestens PHP 5. Auch die Datenbank MySQL 4 wird nach diesem Release nicht mehr unterstützt. Echte Neuerungen kann man dann wieder beim Update auf WordPress 3.2 erwarten.

Category: Allgemein  Tags: , , ,  One Comment

MySQL Root-Passwort festlegen

Nach Abschluss einer LAMP-Installation fehlt in der Regel das Passwort für den Datenbank-Admin root von MySQL. Mit dem Aufruf

MySQL –u root MySQL

kann man das überprüfen. Kommt als Prompt MySQL>, dann hat MySQL noch kein root-Passwort.

Um ein neues Passwort für den Benutzer root festzulegen, gibt man

UPDATE user SET Password=PASSWORD(‘geheim’) WHERE user=’root’;

ein.  Die Benutzereinstellungen speichert MySQL aus Geschwindigkeitsgründen im Arbeitsspeicher zwischen, also muss die Datenbank danach an diesen Cache angeglichen werden. Das erreicht man mit dem Befehl

MySQL –u root MySQL.

Man kann alternativ das Passwort auch mit MySQLAdmin eingeben, das Verwaltungsprogramm wird direkt von der Shell aus gestartet. Diese Methode ist aber unter Umständen unsicher, denn ein anderer Benutzer des Systems könnte das Passwort im Klartext mitlesen, wenn er sich alle aktuell laufenden Prozesse ansieht. Wenn das Passwort einmal gesetzt wurde, muss sich der User root vor jedem Zugriff mit diesem Passwort identifizieren.

Category: Allgemein  Tags: , ,  Leave a Comment

Datenbanksicherung mit phpMyAdmin

Statische Internetseiten lassen sich ja recht einfach sichern. Man kann zum Beispiel alle Dateien vom Rootverzeichnis abwärts per FTP auf seinen PC übertragen und hat eine Sicherungskopie der gesamten Präsenz. Und da statische Seiten sich selten ändern, braucht man den Vorgang auch nicht häufig wiederholen und hat trotzdem immer eine Sicherung des aktuellen Standes.

Das gleiche Verfahren eignet sich auch für dynamische Internetseiten, die einen Teil ihrer Inhalte aus einer Datenbank beziehen. Die statischen Anteile sichert man auf die schon für statische Seiten beschriebene Art und Weise.

Allerdings braucht man auch ein Verfahren, um die Datenbank so zu sichern, dass man sie jederzeit wieder neu aus dem Nichts aufbauen kann. Da hilft das Tool phpMyAdmin, das fast jeder Hoster seinen Rootserver- oder VServer-Kunden zur Verfügung stellt. Man kann  phpMyAdmin aber auch selbst mit wenig Aufwand nachinstallieren, das Programm kostet nichts.

Um eine Sicherungskopie der Datenbank zu erzeugen, wählen Sie den Menüpunkt „Exportieren“. Hier werden verschiedene Formate für den Export angeboten, neben SQL auch CSV und XML und weitere. SQL ist am besten geeignet, denn dabei werden alle informationen der Datenban und ihrer Tabellen mit gesichert, so dass man aus der SQL-Sicherung die komplette Datenbank wieder neu erzeugen kann.

Wenn irgendwann einmal die Rücksicherung der Datenbank nötig ist, braucht man nur die SQL-Datei ausführen und die Datenbank wird komplett mit allen Tabellen und Datensätzen wieder hergestellt.

PHP Data Objects

Seit der Version PHP 5.1 gibt es in PHP zusätzlich zu den Standardfunktionen von MySQL auch die PHP Data Objects (PDO). Das ist eine PHP-Erweiterung, mit der man sehr schnell in einheitlicher Weise auf verschiedene Datenquellen zugreifen kann.

Ähnlich wie beim bekannten und weit verbreiteten Repository PEAR werden dabei die spezifischen Zugriffe auf die verwendete Datenbank durch PDO gekapselt und sind damit transparent. PDO ist aber im Gegensatz zu PEAR eine rein binäre Erweiterung und deshalb auch deutlich schneller. PDO unterstützt zurzeit die Datenbanken MySQL, SQLite, PostgreSQL, MS SQL Server, Oracle, DB2, Firebird und auch ODBC. Dabei braucht allerdings jeder Datenbanktyp seinen spezifischen Treiber, sonst funktioniert es nicht.

Eine Datenbankverbindung kann man über PDO mit folgendem Code öffnen, die Daten auslesen und listen und dann wieder schließen:

$db = new

PDO(‘mysql:host=localhost;dbname=meinedatenbank‘, ‘user‘, ‘passwort‘);

$sql = $db->prepare(“SELECT * FROM meinetabelle“);

$sql->execute();

while ($row = $sql->fetch()) {

echo $row[id].” “.$row[name].“ <br /> “;

}

$sql 0 NULL;

$db = NULL;

Das kurze Beispiel-Script öffnet eine Verbindung zur MySQL-Datenbank meinedatenbank, liest alle Daten aus der Tabelle meinetabelle aus und listet dann die Datenfelder id und name aus jedem Datensatz auf. Danach wird die Datenbankverbindung sauber geschlossen.

Die Erweiterung PDO gestattet auch die Arbeit mit Prepared Statements, also vorkompilierten SQL-Kommandos. Dabei werden Platzhalter statt der dynamischen Daten verwendet, denen in einem zweiten Schritt die echten Werte zugewiesen werden. Das ergibt bei mehrmaliger Ausführung dieser Kommandos einen sehr deutlichen Gewinn an Performance. Aber auch bei einmaligen Aufrufen sind Prepared Statements den Methoden exec() und query() von der Geschwindigkeit her überlegen.

Die PDO-Technik bietet auch mehr Sicherheit, weil man damit SQL Injection relativ leicht verhindern kann. Darüber hinaus unterstützt PDO neben den benannten auch anonyme Parameter. In diesem Fall erzwingt die Reihenfolge der Parameter die Reihenfolge der Parameterwerte.

Welche Datenbank-Schnittstellen auf Ihrem System unterstützt werden, können Sie in der PHP-Konfigurationsdatei nachlesen oder sich mit dem Kommando phpinfo() ausgeben lassen.

Category: Allgemein  Tags: , ,  Leave a Comment

Die platzsparende Speicherung von IP-Adressen mit MySQL und PHP

Es ist eine ziemlich unbekannte Funktion von MySQL, die es erlaubt, IP-Adressen nicht wie üblich als VARCHAR(15), sondern als UNSIGNED INT(10) in der Datenbanktabelle abzuspeichern und natürlich auch wieder zurück in eine IP-Adresse zu verwandeln. Da VARCHAR(15) 16 Bytes verbraucht und der 4-Byte-Long nur 4 Bytes, braucht man damit nur ein Viertel des Speicherplatzes.

Die dazu nötigen MySQL-Funktionen sind INET_ATON() und INET_NTOA(). Wenn Sie den Befehl

SELECT INET_ATON(„127.0.0.1“), INET_NTOA(2130706433)

an MySQL schicken, werden sie als Resultate 2130706433 und 127.0.0.1 zurückbekommen. In dieser rein numerischen Notation lassen sich zum Beispiel bestimmte Ranges von IP-Adressen wesentlich einfacher überprüfen als mit den IP-Adressen:

SELECT `feld` FROM `tabelle` WHERE `ip`&lt; = INET_ATON(’192.168.254.1′) AND `ip`&gt; = INET_ATON(’192.168.254.254′);

Dieser Befehl zeigt alle gespeicherten IP-Adressen zwischen 192.168.254.1 und 192.168.254.254.

Es gibt auch zwei entsprechende PHP-Funktionen, die genauso funktionieren. Mit ip2long() und long2ip() übernimmt PHP die entsprechende Umwandlung, so dass auch ohne MySQL das wesentlich einfachere Scannen von IP-Ranges möglich ist.

Category: Allgemein  Tags: , ,  One Comment

MySQL: Auto-Increment-Werte verändern

Wenn Sie schon mit MySQL-Datenbanken gearbeitet haben, wissen Sie, dass man schon bei einer kleinen Datenbanklösung meist nicht an einem Primärschlüssel in den Tabellen vorbei kommt, und sei es nur aus Geschwindigkeitsgründen. Manchmal ist es ein Feld, das von der Anwendung nicht gebraucht wird, häufiger aber ein ID-Feld, das bei einer Rechnungstabelle die Rechnungsnummer oder bei einer Kundentabelle die Kundennummer enthält.

Gemeinsam haben diese Felder, dass es Integer-Feldtypen sind und dass durch die Auto-Increment-Funktion, die man bei der Erstellung der Tabelle als Extra angibt, bei der Anlage jedes neuen Datensatzes das Auto-Increment-Feld um 1 erhöht und automatisch eingetragen wird. Manchmal gibt es aber Gründe, die interne ID-Nummer, die MySQL abgespeichert hat, zu verändern, um einen Sprung in die IDs einzubauen.

Nehmen wir ein Beispiel zum Schmunzeln, das aber häufiger vorkommt: Wenn Ihr Kunde mit der von Ihnen erstellten PHP/MySQL-Lösung zur Rechnungsstellung beginnt, möchte er nicht, dass die erste Rechnungsnummer die 1 ist, weil er sich damit als Neuling im Geschäft oder als kleine Firma zu outen glaubt.

Ein anderer Grund wäre zum Beispiel, wenn die ersten vier Stellen der Rechnungsnummer oder Kundennummer das Kalenderjahr der Anlage angeben sollen und nur der Rest der Rechnungsnummer eine laufende Nummer sein soll. Dann kommt nach der Rechnung Nr. 200912345 als letzte Rechnung im Dezember die Rechnung Nr. 201012346 im Januar des neuen Jahres.

Das erreichen Sie leicht mit dem Befehl:

alter table rechnungen auto_increment=201012346.

Dadurch bekommt die nächste neu angelegte Rechnung die Rechnungs-Nr. 201012346.

Drupal – ein CMS für Community-Websites

Drupal ist zwar ein weit verbreitetes CMS, hat seine Stärken aber nicht unbedingt im Content-Management. Das System ist eher für das Erstellen und Pflegen auch größerer Communities ausgelegt und diesen Bereich deckt es sehr gut ab. Drupal bietet dazu ein ausgefeiltes Benutzer-Management und viele Module wie Blogs und Foren als interaktive Bestandteile.

Die Architektur von Drupal ist für Content Management Systeme typisch. Man kann das Kernsystem mit zusätzlichen Modulen erweitern, um die gewünschten oder benötigten Zusatzfunktionen zu realisieren. DieSchnittstelle ( API) zur Integration von solchen Modulen ist bei Drupal gut dokumentiert und im Internet wird eine Unzahl von Erweiterungen für das CMS angeboten.

Das Aussehen der erstellten Seiten, also Design und Layout, wird von einem Template-System gesteuert. Auch diese Templates (auch Skins oder Designs genannt) zu Drupal findet man in großer Zahl im Internet.

Zum Ablaufen braucht Drupal auf dem Server PHP in der Version 4.3.5 oder höher und als Datenbank MySQL oder PostgreSQL.

Wenn die Apache-Komponente mod_rewrite zur Verfügung steht, unterstützt Drupal auch die Verwendung von suchmaschinenfreundliche URLs. Für einige Funktionen des CMS werden noch weitere Komponenten nötig, zum Beispiel das meist sowieso eingebundene XML-Modul von PHP für das Blogger-API oder die RSS-Syndication.

Vor dem Installieren muss auf dem Server eine Datenbank für Drupal mit phpMyAdmin erstellt und die Datei settings.php in sites/default erzeugt werden. Danach kann man die URL aufrufen und wird vom Installationsscript durch den Installationsvorgang geführt.

Category: Allgemein  Tags: , , , ,  Leave a Comment