MySQL ist eine freie und leistungsfähige SQL-Datenbank. Der neue freie Fork heißt MariaDB. MySQL ist weiterhin eingeschränkt frei verwendbar.

Berechtigungen#

Bei Problemen auf die Datenbank zuzugreifen, kann ein manueller Start erfolgen mit:
mysqld-debug --defaults-file="C:\...\my.ini" --skip-grant-tables

Stoppen mit:

mysqladmin shutdown

LOB-Handling#

MySQL kann auch LOB (Large Object), also Binärdaten (BLOB) und lange Zeichenketten (CLOB) speichern. In Hibernate kann dies als String, byte, Blob oder Clob erfolgen.

In der Default-Konfiguration überträgt MySQL pro Statement maximal 1 MB, dies kann verändert werden durch einen Konfigurationseintrag in mysql.ini:

...
[mysqld]
...
max_allowed_packet=100M

Datenbank Schema#

In der Verwaltung des Datenbank-Schemas gibt es einige Besonderheiten.

Löschen einer Spalte mit Fremdschlüssel#

Es muss zunächst der Fremdschlüssel gelöscht werden, dann kann die Spalte gelöscht werden:
alter table transaction drop foreign key FK_8mn5rcy8y8uxx2wke530ywcgr;
alter table transaction drop column recipientRole_id;

Backup#

MYISAM-Tabellen können einfach kopiert werden, bei INNODB-Tabellen ist der Index zu beachten. Daher geht man über einen sogenannten Dump:
mysqldump -u root -p <database> --single-transaction >backup.sql

Erklärung: Die Option --single-transaction vermeidet explizite Locks anzulegen, für die extra Rechte angelegt werden müssen.

Das Zurückspielen erfolgt mit:

mysql -p -D <database> <backup.sql

Je nach vergebenen Rechten kann es erforderlich sein, mysqld-debug zu starten (siehe oben).

MySQL 8+#

Besonderheiten ab MySQL 8.

Login Failed#

Das Authentifizierungsverfahren wurde ab MySQL 8 verschärft.

Hinweis: MariaDB arbeitet weiter mit dem kompatiblen Login-Verfahren.

Alte Clients können sich nicht mehr verbinden. Das alte Login-Verfahren kann wieder aktiviert werden mit dem Startparameter:

--default-authentication-plugin=mysql_native_password

Bei Docker MySQL wird dies mit dem Startparameter CMD übergeben.

Root Benutzer#

Der root Benutzer kann genauso erstellt und gelöscht werden:
drop user 'root'@'localhost';
create user 'root'@'%' IDENTIFIED WITH mysql_native_password BY '<password>';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

Benutzer erstellen#

Benutzer erstellen und Berechtigungen zuweisen:
create user 'postfix'@'%';
GRANT ALL PRIVILEGES ON postfix.* TO 'postfix'@'%';

MariaDB#

MariaDB ist ein Fork von MySQL der weiterhin die Open Source Variante vertreten soll. In MariaDB ist nur mysql_native_password implementiert, sodass die zusätzliche Konfiguration entfällt.