[MySQL] ist eine freie und leistungsfähige SQL-Datenbank. Der neue freie Fork heißt MariaDB. [MySQL] ist weiterhin eingeschränkt frei verwendbar. !!!Command Line In [MySQL] kann man sich lokal einloggen: {{{ mysql -u root -p }}} !!!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|MySQL#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. !!!Konfiguration Bei MariaDB gibt es einige Parameter zum abfragen oder einstellen: ||Parameter||Lesen||Setzen |Max. Connections|SHOW GLOBAL VARIABLES LIKE 'max_connections';|SET GLOBAL max_connections = <value>;