Das MySQL-Problem

Aus mAirListWiki

Wechseln zu: Navigation, Suche

MySQL ist ein Datenbank-Management-System (DBMS) und wohl das bekannteste Open-Source-Produkt in diesem Bereich. Leider ist die Lizenz von MySQL nur bedingt dafür geeignet, mit Closed-Source-Software (wie mAirList) zusammen eingesetzt zu werden. In diesem Artikel sollen die Hintergründe erläutert werden.

Inhaltsverzeichnis

Lizenzen

Bei MySQL spielen insbesondere zwei Softwarelizenzen eine Rolle:

  • Die GNU General Public License (GPL). Sie erlaubt es, den Sourcecode der Software frei zu kopieren und zu verwenden. Wer allerdings Teile von GPL-Software in ein selbstgeschriebenes Programm einbettet, muss auch sein eigenes Programm wieder unter die GPL stellen (und damit zu Open Source Software machen).

Der MySQL-Server steht unter der GPL.

Anders verhält es sich mit der MySQL-Client-Library, also mit der DLL, die man benötigt, um mit selbtgeschriebener Software auf einen MySQL-Server zuzugreifen:

  • Bis einschließlich Version 3.23.19 stand die DLL unter der LGPL, durfte also auch zusammen mit Closed-Source-Software eingesetzt werden.
  • Beginnend mit Version 4.0 wurde die Library unter die GPL gestellt. Sie darf jetzt nur noch zusammen mit Software verwendet werden, die ebenfalls unter der GPL oder einer kompatiblen Open-Source-Lizenz steht.

Details dazu stehen auf der MySQL-Homepage.

Das Problem

mAirList ist Closed Source. Demnach ist es nicht erlaubt, die MySQL-Client-Library Version 4.0 oder größer zusammen mit mAirList zu verwenden.

Ausweg 1: Lizenz kaufen

MySQL bietet Herstellern von Closed-Source-Software an, eine kommerzielle Lizenz der Client-Library zu erwerben. Diese ist aber sehr teuer und steht in keinem Verhältnis zu den Einnahmen, die Torben bislang mit mAirList erzielen konnte.

Ausweg 2: Neuer Server, alte DLL

Glücklicherweise funktioniert die alte Version 3.23 der DLL auch noch mit neueren Servern - jedenfalls bislang. Es ist also kein Problem, den Server zum Beispiel in Version 5.0 zu betreiben, und mAirList weiter mit Version 3.23 der DLL laufen zu lassen. Lediglich ein Problem gibt es zu umschiffen: Die neuen Passwort-Formate.

MySQL speichert und überträgt die Benutzerpasswörter ab Version 4.1 in einem neuen Format, das die alte DLL noch nicht versteht. Man erhält dann beim Verbindungsaufbau die Fehlermeldung:

Client does not support authentication protocol requested by server; consider upgrading MySQL client.

Da dieser Lösungsvorschlag nicht möglich ist (siehe oben), müssen wir uns anders behelfen. Es ist möglich, mit Hilfe der Funktion OLD_PASSWORD das Passwort im alten Format im Server zu speichern. Dann klappt auch die Anmeldung mit der alten DLL wieder. Wie genau das geht, steht im MySQL-Handbuch: http://dev.mysql.com/doc/refman/5.0/en/old-client.html.

Leider gibt es keine Garantie dafür, dass diese Lösung auf Dauer funktionieren wird. Wenn in einer zukünftigen Version des MySQL-Servers die Protokolle grundlegend geändert werden, ist möglicherweise gar kein Zugriff mehr mit der alten DLL möglich. Daher sollte man sich keinesfalls auf diesen Trick verlassen.

Ausweg 3: PostgreSQL

Der einzig sinnvolle Ausweg ist es, MySQL komplett den Rücken zu kehren und stattdessen ein anderes Produkt zu benutzen. Die neue mAirList-Datenbank mAirListDB wird daher PostgreSQL anstelle von MySQL verwenden. Abgesehen von der Tatsache, dass manche User bislang eher mit MySQL Erfahrungen gesammelt haben, entstehen dadurch keine Nachteile - PostgreSQL hat einen gleichwertigen, teilweise größeren Funktionsumfang, bessere Installationsroutinen und eine weitaus closed-source-freundlichere Lizenz.

Persönliche Werkzeuge