MySQL #

Mysql ist die wohl beliebteste Datenbank unter Linux.

Installation und Einrichtung #

Installation folgender Debian-Pakete für ein vernünftiges Grundsystem:

  • mysql-server - Eigentlicher Server
  • mysql-client - Zugriff auf den Server per Kommandozeile
  • PHPMyAdmin - sehr komfortable Web-Oberfläche zur Verwaltung von Datenbanken
  • mysql-doc - Sehr ausführliche Dokumentation über MySQL und SQL im allgemeinen, auch per dwww abrufbar

Als erstes sollte man per

  mysqladmin -u root password meinpasswort

oder (ohne das Passwort in die History zu schreiben) mit

  mysql -u root
  > SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpwd');
  > exit

sein root-Passwort neu setzen (Vielleicht auch über GutePasswoerter nachdenken). Dann kann man mit

  mysql -u root -p

eine mysql-Shell bekommen, um z.B. Datenbanken und Benutzer anzulegen. Dies geht z.B. so:

  mysql> CREATE DATABASE datenbank;
  mysql> GRANT ALL PRIVILEGES ON datenbank.* TO benutzer@localhost IDENTIFIED BY 'passwort';
  mysql> GRANT SELECT ON mysql.db TO benutzer@localhost;
  mysql> GRANT SELECT ON mysql.tables_priv TO benutzer@localhost;
  mysql> QUIT

Alternativ kann man natürlich hierzu auch die Weboberfläche von phpmyadmin unter http://localhost/phpmyadmin aufrufen. Dabei sollte man aber beachten, daß die Passwörter unverschlüsselt übers Netz gehen, wenn man nicht auf "localhost" arbeitet und kein HTTPS benutzt.

Meistens ist es so, daß man nur einen einzelnen Benutzer benötigt, der dann Zugriff auf eine einzelne Datenbank bekommt, um ein bestimmtes Programm laufen zu lassen. Das müsste bis hierhin problemlos möglich sein.

Dokumentation #

Die MySQL-Anleitung ist sehr ausführlich und hilft eigentlich in allen Lebenslagen. Evtl. ist die lokale Anleitung (per DwwwHilfe bzw. in /usr/share/doc/mysql-doc gut zu finden) die bessere Alternative, weil sie wirklich dieselbe Programmversion beschreibt, die auch installiert ist. Also: Wer lesen kann, ist klar im Vorteil!

Zugriff vom Netzwerk #

In der Debian-Grundeinstellung ist der Zugriff vom Netzwerk aus gesperrt (nur localhost). Um das zu ändern, muss in der Datei /etc/mysql/my.cnf der Eintrag skip-networking auskommentiert werden. Danach den Server mit /etc/init.d/mysql restart neu starten und fertig.

Passwort gelöscht #

Wer mal beim rumspielen aus Versehen den root-Benutzer gelöscht hat, bzw. dessen Passwort vergessen hat, kann den Server mit

  mysqld --skip-grant-tables

starten und dann einen neuen User anlegen. (Bei Problemen gibts dazu noch mehr in der FAQ auf der Webseite) -- ThomasBayen

Lizenz #

MySQL ist dual-lizensiert, d.h. es steht einerseits unter der GPL, kann aber andererseits auch von der Firma mysql kommerziell lizensiert werden. Was kann man nun tun, wenn man ein kommerzielles Programm schreiben möchte?

Dazu ist zuerst mal zu sagen, daß es nach allen Auslegungen der GPL kein Problem ist, den GPL-Mysql-Server gleichzeitig mit einem eigenen, proprietären, Programm auf eine CD zu packen. Beide Programme laufen ja letztlich eigenständig und das mysql sollte natürlich alle GPL-Bedingungen erfüllen (Quelltext und Lizenz beilegen etc.). Etwas komplizierter ist die Frage nach dem Treiber, denn dieser steht ebenfalls unter der GPL und wird ja normalerweise in unser Programm hineingelinkt. Nachdem über diese Frage in der LUG bereits sehr ausführlich diskutiert worden ist und ich diese Frage jetzt für mich selber auch nochmal gestellt hatte, habe ich nach einigen Recherchen folgende Möglichkeiten festgestellt. Das hier gesagte gilt für den JDBC-Treiber, den auch die Diskussionen in der LUG ausgelöst hat.

  • Die beste Lösung ist: Man stellt sein eigenes Programm auch unter die GPL und fertig. Seien wir mal ehrlich - in den meisten Fällen schadet das eigentlich niemandem. Beim Kunden dürfte das Vertrauen schaffen und die Wahrscheinlichkeit, daß jemand anderes sich in meine selbstgeschriebene Arbeit so reinarbeitet, wie ich selber das gemacht habe, ist sehr gering. Sollte dies doch passieren, wird es im Zweifelsfall vor allem der Qualität dienen.
  • Ein Weg ist es wohl, bei Mysql anzufragen, was eine Lizenz kostet. Schliesslich haben die da viel Arbeit reingesteckt und warum sollen sie keinen Ertrag daraus ziehen. Vielleicht komme ich auf diesen Weg zurück, wenn mein Programm mal Erträge erwirtschaftet, bis dahin habe ich das nicht weiter verfolgt...
  • Der heutige offizielle Treiber Connector/J hiess früher MM.Mysql und ist bis Version 2.x unter der LGPL veröffentlicht worden. Diese Lizenz erlaubt eine Mischung mit proprietärem Code, wenn der Treiber nur als Bibliothek eingebunden wird. Was genau der Nachteil an dieser älteren Version ist, kann ich nicht sagen, könnte mir aber gut vorstellen, daß die Unterschiede bei normaler Nutzung der Datenbank nicht dramatisch sind.
  • Die GPL V2 bezieht sich nicht auf das ganze Programm, wenn dieses ohne den GPL-Teil ein eigenständiges Werk ist. Hier sollte eine Lösung liegen: Man schreibt sein Programm so, daß es unabhängig vom Datenbank-Treiber ist. Das ist sowieso immer eine gute Idee. :-) Man kann als Beispiel den HSQLDB oder Postgresql-Treiber beilegen (oder den Mysql 2.x-Treiber) und fertig. Dann sollte man aber auch als Option ein eigenes Paket mit dem GPL Mysql-Treiber beilegen. Die Installation des Treibers (quasi als Plugin) nimmt dann erst der Anwender vor, wenn er dies möchte. Dadurch, daß das Programm auch ohne diesen eigenständig ist, erstreckt sich die GPL nun nur auf diesen Treiber.
Tags:  Datenbank

Add new attachment

Only authorized users are allowed to upload new attachments.
« This page (revision-7) was last changed on 20-Mar-2009 12:35 by ThomasBayen