Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

Was fehlt?

Es liegt in der Natur der Sache: Ein Wiki ist niemals fertig. Wir geben uns große Mühe, mit der Entwicklung Schritt zu halten; lassen Supportanfragen direkt in neue Artikel einfließen … aber auch wir sind nicht perfekt. Wenn du hier nicht fündig wirst: Nicht schmollen - Bescheid sagen! Unter hallo@uberspace.de steht dir unser Team gerne bereit. Hand drauf!

database:mysql

MySQL

Wir setzen bei uns die jeweils zur Distribution gehörige MySQL-Version ein, was bei CentOS 6 derzeit die Version 5.1 ist. Unsere künftigen Hosts auf Basis von CentOS 7 werden das zu MySQL 5.5 kompatible MariaDB 10.0 enthalten. Wir bieten dir aber eine Übergangslösung an.

Bei Uberspace.de unterstützen wir MySQL in der Version 5 (wenn du die genaue Version wissen willst, die auf dem betreffenden Server läuft, auf dem dein Uberspace liegt, gib auf der Shell einfach mysql -V ein).

Von Haus aus legen wir dir automatisch eine Datenbank an, die genauso heißt wie dein Uberspace auch.

Zugangsdaten

Für den Zugriff auf deine Datenbank hast du einen MySQL-User, der genauso heißt wie dein Uberspace-Account; die primäre Datenbank heißt ebenfalls so.

Aus Sicherheitsgründen vergeben wir für deinen MySQL-User ein separates Passwort, das unabhängig von allen anderen genutzten Passwörtern steht. Das von uns vergebene Passwort findest du in der .my.cnf in deinem Home-Verzeichnis. Diese Konfigurationsdatei wird auch automatisch eingelesen, wenn du den Befehl mysql auf der Shell verwendest - so musst du dein Passwort nicht von Hand eingeben. Und so sieht's aus (das Passwort aus dem Beispiel haben wir natürlich längst wieder geändert ;-):

[mathilde@amnesia ~]$ cat .my.cnf
## 2010-12-12 /usr/local/sbin/uberspace-account-create.sh 
[client]
password=lywranAzaj
port=3306
user=mathilde
socket=/var/lib/mysql/mysql.sock

Der MySQL-Server läuft auf dem gleichen Server wie dein Uberspace. Benutze also bitte einfach localhost, wenn du nach einem Servernamen gefragt wirst - das wird in den meisten Konfigurationsdateien ohnehin vorgeschlagen sein.

Ein direkter Zugang von außen auf den MySQL-Server ist aus Sicherheitsgründen nicht möglich. Wenn du von deinem Rechner aus direkten Zugriff brauchst, so geht dies nur über einen SSH-Tunnel. Bitte wende dich an uns, wenn du dazu Hilfe benötigst.

Read-Only User

In manchen Fällen verlangen es die Applikationen oder es gebietet sich - aus Sicherheitsgründen - einen separaten Zugang zu verwenden, der ausschließlich über Leserechte verfügt. Dieser User darf SELECT-Statements ausführen und nichts anderes. Die Zugangsdaten findest du ebenso in der Datei .my.cnf.

Auf der Shell kannst du dich folgendermaßen damit einloggen:

[mathilde@amnesia ~]$ mysql --defaults-group-suffix=readonly
Diese Funktionalität existiert bei Uberspace seit dem 30. April 2015. Wenn du deinen Uberspace früher angelegt hast, richten wir den Zugang gerne für dich nachträglich ein. Schreibe uns in dem Fall bitte an hallo@uberspace.de und nenne uns den Namen deines Uberspace.

Passwort ändern

Möchtest du dein Passwort selbst ändern, so kannst du das mit dem SQL-Befehl SET PASSWORD = PASSWORD(„…“) tun. So sähe das auf der MySQL-Shell aus:

[mathilde@amnesia ~]$ mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 52775
Server version: 5.0.77-log Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> SET PASSWORD = PASSWORD("PlybCatAs5");
Query OK, 0 rows affected (0.07 sec)

Du kannst bzw. solltest es anschließend auch in deiner .my.cnf anpassen, damit du dich weiterhin mit Eingabe von mysql mit dem MySQL-Server verbinden kannst, ohne explizit ein Passwort von Hand eingeben zu müssen.

Bitte beachte, dass der MySQL-Kommandozeilen-Client nur Passwörter mit maximal 79 Zeichen (plus abschließendes Null-Byte) erlaubt. Das betrifft nur den Client selbst; da Passwörter im Server nur als Hash gespeichert werden, können sie an sich durchaus beliebig lang sein. Mit anderen Clients (z.B. von Python aus) klappt der Zugriff auch mit längeren Passwörtern.

Hast du dein Passwort bereits versehentlich in der .my.cnf geändert, ohne es zuvor auch mit SET PASSWORD wirklich zu setzen, und kommst jetzt nicht mehr an die Datenbank heran? Wenn dein Uberspace wenigstens schon einen Tag bei uns liegt und insofern einen Backup-Zyklus mitgemacht hat, kannst du das bisherige Passwort aus dem Backup entnehmen - so könnte das aussehen:

[mathilde@amnesia ~]$ grep ^password /backup/daily.0/home/$USER/.my.cnf 
password=PlybCatAs5

Ansonsten melde dich bitte einfach beim Support, und wir setzen dir ein ganz neues MySQL-Passwort.

Adminer

Wir stellen dir ein zentral installiertes Adminer bereit, mit dessen Hilfe du deine Datenbanken webbasiert verwalten kannst. Du findest es unter dem Namen adminer auf dem Server, unter dem sich auch dein Uberspace befindet. Liegt dieser also z.B. auf unserem Server amnesia, so findest du Adminer unter https://adminer.amnesia.uberspace.de/ - aus Sicherheitsgründen lassen wir hier nur TLS-verschlüsselte Verbindungen zu, da hierbei ja deine Zugangsdaten per Browser übermittelt werden. Viele User ziehen Adminer gegenüber phpMyAdmin vor, aber letzteres bieten wir natürlich ebenfalls:

phpMyAdmin

Wir stellen dir ein zentral installiertes phpMyAdmin bereit, mit dessen Hilfe du deine Datenbanken webbasiert verwalten kannst. Du findest es unter dem Namen pma auf dem Server, unter dem sich auch dein Uberspace befindet. Liegt dieser also z.B. auf unserem Server amnesia, so findest du phpMyAdmin unter https://pma.amnesia.uberspace.de/ - aus Sicherheitsgründen lassen wir hier nur TLS-verschlüsselte Verbindungen zu, da hierbei ja deine Zugangsdaten per Browser übermittelt werden.

Weitere Datenbanken

Du kannst dir selbst beliebig viele weitere Datenbanken anlegen (auf der MySQL-Konsole oder natürlich auch mit adminer oder phpMyAdmin oder über ein Framework), es gibt nur eine Einschränkung: Alle weiteren Datenbanken müssen mit Deinem Accountnamen gefolgt von einem „_“ beginnen. Wenn Dein Uberspace beispielsweise „gislinde“ heißt, dann könnte eine Zusatzdatenbank beispielsweise „gislinde_irgendwas“ heißen.

Zugriff von außen

Wir lassen aus Sicherheitsgründen keinen direkten Zugriff auf MySQL über das Internet zu. Möchtest du von deinem eigenen Rechner aus aber gerne „quasi direkt“ auf die Datenbank zugreifen, so kann ein SSH-Tunnel helfen. Bist du beispielsweise silvia auf dem Host neon, so ginge das so (diesen Befehl musst du auf der Shell deines lokalen Rechners eingeben, nicht auf deinem Uberspace!):

[someuser@somehost ~]$ ssh -L 3306:127.0.0.1:3306 silvia@neon.uberspace.de

Das war's schon! Die Option -L sorgt dafür, dass du lokal auf deinem Rechner einen Port 3306 etablierst. Dort wartet dann dein SSH-Client darauf, die Verbindung entgegenzunehmen, tunnelt sie - verschlüsselt! - zu deinem Uberspace und lässt sie dort auf 127.0.0.1:3306 enden, wo dann unser MySQL-Server auf dich wartet. Das war's schon!

Benutzt du Windows? Dann ist vermutlich PuTTY der SSH-Client deiner Wahl (siehe hierzu auch unseren Abschnitt zu SSH unter Windows). Auch mit PuTTY kannst du einfach einen Tunnel aufbauen:

  1. Gib im Willkommensfenster wie gewohnt unter „Host Name (or IP address)“ den Hostnamen des Servers ein, auf dem dein Uberspace liegt, z. B. neon.uberspace.de
  2. Wähle links im Baum-Menü den Punkt „Connection“ > „SSH“ > „Tunnels“
  3. Unter „Add new forwarded port:“ gibst du nun ein:
    • Source port: 3306
    • Destination: 127.0.0.1:3306
    • (o) Local ( ) Remote
  4. Klicke auf „Add“, um den Tunnel hinzuzufügen
  5. Wechsele links im Baum-Menü wieder den ersten Punkt „Session“
  6. Gib der Session unter „Saved Session“ einen Namen, z.B. „Uberspace w/MySQL“, und klick auf „Save“

Der letzte Schritt ist natürlich optional, bietet sich aber an, wenn du die Tunnelkonfiguration nicht jedes Mal von Neuem vornehmen möchtest.

Möchtest du nun auf MySQL zugreifen, starte einfach deine SSH-Verbindung mit dem Tunnel - ab sofort kannst du dann auf deinem lokalen Rechner auf 127.0.0.1:3306 zugreifen und erreichst darüber direkt den MySQL-Server auf deinem Uberspace-Host.

Achtung: Bist du außerdem gitolite-User, so hat gl-tool shell-add … deinen SSH-Key mit der Option no-port-forwarding in der ~/.ssh/authorized_keys eingetragen, was verhindert, dass du wie oben beschrieben einen SSH-Tunnel öffnen kannst. Du musst diese Option daher aus der betreffenden Zeile entfernen, damit der SSH-Tunnel nutzbar ist.

Trigger

MySQL-Trigger sind mit unserem MySQL-Setup leider inkompatibel. Software die MySQL-Trigger benötigt (wie z.B. OpenPhoto seit ein paar Versionen) ist daher leider inkompatibel mit dem Hosting auf Uberspace.

Wir betreiben MySQL in einem Master-Slave-Setup, um konsistente MySQL-Backups erstellen zu können, ohne dabei den produktiven MySQL-Server stoppen bzw. locken zu müssen. In diesem Setup aber deaktiviert MySQL die Möglichkeit, Trigger ohne das SUPER-Privileg anlegen zu können. Da wir das SUPER-Privileg nunmal nicht erteilen können, ist es leider ausgeschlossen MySQL-Trigger bei uns zu verwenden.

(Es geht dabei nicht um das TRIGGER-Privileg, das seit MySQL 5.1.6 gesondert existiert und in einem Setup ohne Master-Slave-Replikation ausreicht um ohne das SUPER-Privileg Trigger anlegen zu können. Trigger an sich vertragen sich nicht gut mit der Replikation.)

Entwicklung

Unsere Perl-Installation haben wir um das Modul DBD::mysql erweitert.

Unsere PHP-Installation ist mit der „MySQL Improved Extension“ mysqli kompiliert.

Unsere Python-Installation haben wir mit dem Modul mysql-python erweitert, das Unterstützung für die DB-API Spec v2 bietet.

MariaDB 10.0

Wir setzen bei uns die jeweils zur Distribution gehörige MySQL-Version ein, was bei CentOS 6 derzeit die Version 5.1 ist. Unsere künftigen Hosts auf Basis von CentOS 7 werden das zu MySQL 5.5 kompatible MariaDB 10.0 enthalten.

Für den Moment können wir dir eine Übergangslösung anbieten. Wir betreiben einen Standalone-Host mit MariaDB 10.0, auf dem wir für einzelne User, die das heute schon benötigen, Datenbanken anlegen, auf die dann über einen separaten Port (technisch gesehen über einen SSH-Tunnel) zugegriffen werden kann. Hierbei gibt es aber zwei wichtige Dinge zu beachten:

  1. Wir erstellen zwar auch von diesem separaten Host regelmäßig Backups; auf jene hast du aber - im Gegensatz zu den normalen MySQL-Backups - nicht direkt Zugriff, sondern wir müssen dir Dumps auf Anfrage bereitstellen.
  2. Es handelt sich wie gesagt um eine Übergangslösung, die nur für Leute gedacht ist, die zwingend hier und jetzt unbedingt MySQL 5.5 bzw. etwas dazu Kompatibles brauchen. Sobald unsere CentOS-7-Hosts am Start sind, gibt es noch eine Übergangsfrist von voraussichtlich 3 Monaten, innerhalb derer die betreffenden User dann von ihrem CentOS-6- auf einen CentOS-7-Host migrieren müssen, wo MariaDB dann offizielles Feature ist.

Mit dem Befehl uberspace-setup-mariadb kannst du dir eine Datenbank auf dem Host anlegen. Die Zugangsdaten werden in ~/.my.mariadb.cnf abgelegt.

  • Hostname: 127.0.0.1 (nicht „localhost“; damit würde der lokale Socket verwendet und der Port ignoriert)
  • Port: 3307 (statt des Default-Ports 3306)

Auf der Shell würdest du also z.B. mysql -h 127.0.0.1 -P 3307 --password bzw. mysql --defaults-file=~/.my.mariadb.cnf eingeben können, um dich mit dem MariaDB-Server statt mit dem lokalen MySQL-Server zu verbinden.

database/mysql.txt · Zuletzt geändert: 2016/12/06 20:43 von uber