= 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 [http://www.mysql.com/documentation/mysql/bychapter/index.html
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|http://mmmysql.sourceforge.net/] 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|http://www.gnu.de/documents/gpl-2.0.de.html] 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.

[{Tag Datenbank}]