MySQL

MariaDB-Server remote erreichbar machen

16. Mai 2021 · Anwendungen · andreas · Kein Kommentar

Im abgeschotteten Intranet manchmal ein zeitsparender Faktor bei der Entwicklung, sollte man sich trotzdem genau überlegen, ob man Verbindungen von Systemen außer localhost zulassen möchte.

Auf einem Debian 10-System muß zuerst die Datei “50-server.cnf” im Verzeichnis “/etc/mysql/mariadb.conf.d/” angepasst werden:

$ cd /etc/mysql/mariadb.conf.d/
$ sudo vi 50-server.cnf

In der Datei dann die Zeile beginnend mit “bind-address” suchen und wie folgt ändern:

bind-address = 0.0.0.0

Diese Änderung bewirkt, daß der Server ab sofort über alle verfügbaren Netzwerkinterfaces erreichbar ist. Anschließend wird der Dienst neu gestartet:

$ sudo systemctl restart mariadb

Als nächster (und letzter) Schritt muß noch ein Benutzer für den externen Zugriff angelegt werden:

$ sudo mysql -u root
MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'remote'@'%' IDENTIFIED BY 'remotepassword';
Query OK, 0 rows affected (0.001 sec)
MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.001 sec)
MariaDB [(none)]> EXIT
Bye

Anschließend kann von beliebigen Quelladressen mit dem Benutzer “remote” auf alle Datenbanken zugegriffen werden. Sinnvollerweise sollte man die Berechtigungen nicht so weitreichend vergeben, sondern auf einzelne Datenbanken (“Datenbank.*”) und Rechner (‘remote’@‘1.2.3.4’) beschränken.


Adminer als phpMyAdmin-Alternative

18. Juli 2019 · Anwendungen · andreas · Kein Kommentar

Ist nach einem Update von Debian 9 (Stretch) zu Debian 10 (Buster) phpMyAdmin - wenn auch mit Fehlern - noch vorhanden, fällt spätestens beim Installationsversuch auf, daß ein Blick in die Release-Notes hilfreich gewesen wäre. Kapitel “5.1.9. Nennenswerte veraltete Pakete” sagt:

Das Paket phpmyadmin ist in in Buster nicht mehr enthalten.

Es bleiben zwei Möglichkeiten: entweder phpMyAdmin unabhängig von der Distribution besorgen, einspielen und zukünftig auch warten oder auf eine Alternative wechseln, welche in den Paketquellen enthalten ist. Eine kurze Suche mit der Suchmaschine des Vertrauens führt i.d.R. zu Adminer, dessen Projektentwickler die aus seiner Sicht relevanten Unterschiede zu phpMyAdmin detailliert auflistet.

Die Installation ist schnell erledigt

$ sudo apt install adminer

Jedoch stellt sich nach dem ersten Aufruf erstmal Ernüchterung ein:

Als Ursache hierfür entpuppt sich eine nicht vorhandene Konfiguration: unter “/etc” wurde zwar ein Verzeichnis “adminer” angelegt, dieses enthält aber keine Konfigurationsdatei(en).

Glücklicherweise lässt sich dies schnell beheben, in dem eine neue Datei “adminer.conf” erzeugt und darin als einzige Angabe der benötigte Alias gesetzt wird.

$ sudo vi /etc/adminer/adminer.conf

Alias /adminer /usr/share/adminer/adminer/

Anschließend wird im Verzeichnis “/etc/apache2/conf-available” ein symbolischer Link auf die soeben erzeugte Konfigurationsdatei gesetzt und anschließend aktiviert:

$ sudo ln -s /etc/adminer/adminer.conf /etc/apache2/conf-available/adminer.conf

$ sudo a2enconf adminer

Den letzten benötigten Schritt schlägt a2enconf dann selbst vor:

To activate the new configuration, you need to run:
systemctl reload apache2

backupDB

29. Mai 2014 · Downloads · andreas · Kein Kommentar

backupDB is a PHP script to dump a MySQL database and send the dump to a given e-mail for backup purposes.
It was inspired by the backup function of the WordPress plugin “wp-dbmanager”.

Weiterlesen


Groß- und Kleinschreibung von MySQL-Tabellennamen

25. Dezember 2012 · Programmierung · andreas · 2 Kommentare

Eine “schöne” Stolperfalle, wenn Projekte aus einer Windows- in eine Unix-Umgebung geschoben werden, sind die Tabellennamen in MySQL. Egal, ob die Tabelle unter dem Namen “Kosten”, “kosten” oder “Kosten” angelegt wurde, unter Windows ignoriert ein Statement wie

SELECT * FROM kOsTeN;

jegliche Groß- und Kleinschreibung und liefert die selektierten Zeilen, während MySQL unter Unix in einen Fehler läuft.


Groß- und Kleinschreibung bei SQLite

20. März 2011 · Programmierung · andreas · Kein Kommentar

Eine der Stolperfallen beim Wechsel zwischen MySQL und SQLite ist, daß SQLite in der Standardeinstellung z.B. bei SELECT-Statements zwischen Groß- und Kleinschreibung unterscheidet. Ein

SELECT * FROM meinetabelle WHERE meinfeld = 'test';

wird zwar eine Zeile mit meinfeld = ’test’ finden, für eine vorhandene Zeile mit meinfeld = ‘Test’ aber kein Ergebnis zurückliefern. Möchte man das SELECT ohne Berücksichtigung von Groß - und Kleinschreibung durchführen, so kann dies durch das Anhängen von ‘COLLATE NOCASE’ erfolgen, also

SELECT * FROM meinetabelle WHERE meinfeld = 'test' COLLATE NOCASE;

womit auch ‘Test’, ’tEst’, ‘TEST’ und noch ein paar andere Schreibweisen gefunden werden.

Möchte man das Verhalten für einzelne Tabellen von Anfang an umstellen, so kann ‘COLLATE NOCASE’ auch entweder direkt bei der Spaltendefinition oder beim Erzeugen eines Indexes angegeben werden.