Direkt zum InhaltDirekt zur SucheDirekt zur Navigation
▼ Zielgruppen ▼

Humboldt-Universität zu Berlin - Computer- und Medienservice

FAQ - Häufig gestellte Fragen

Überblick

  1. Welches der drei angebotenen Datenbankmanagementsysteme sollte ich verwenden?
  2. Mit welcher (universellen) Datenbanksoftware kann ich auf meine Datenbank zugreifen?
  3. Wie groß darf meine Datenbank werden?
  4. Wird das Speichern "großer binärer Objekte" in Datenbanken (BLOBs) unterstützt?
  5. Darf ich personenbezogene Daten in meiner Datenbank speichern?
  6. Wann und wie oft werden Backups erstellt und wie lange werden diese aufgehoben?
  7. Wie kann ich mein Datenbank-Passwort ändern?
  8. Wie kann ich einen Datenbank-Dump erzeugen?
  9. Wie kann ich einen Datenbank-Dump einspielen?
  10. Wie kann ich mittels PHP auf meine PostgreSQL- oder MySQL-Datenbank zugreifen?
  11. Wie funktioniert die Verbindung mittels stunnel?
  12. Wie gefährlich ist eine SQL-Injection und wie kann ich einer solchen vorbeugen?
  13. Wie sollte ich die Tabellen, Spalten usw. in einem selbst erstellten Datenbankschema benennen? Gibt es Standards oder hilfreiche Konventionen?
  14. Gibt es Literaturempfehlungen seitens des Datenbankservices?
1. Welches der drei angebotenen Datenbankmanagementsysteme sollte ich verwenden?
  • wenn keine anderweitigen Gründe (insbesondere die von Ihnen eingesetzte Software) dagegensprechen, empfehlen wir uneingeschränkt PostgreSQL
  • MySQL-Datenbanken erstellen wir nur auf ausdrücklichen Wunsch und wenn sich die Anwender der damit verbundenen Probleme bewusst sind
2. Mit welcher (universellen) Datenbanksoftware kann ich auf meine Datenbank zugreifen?

PostgreSQL:

  • uneingeschränkt können wir pgAdmin empfehlen, das sich ohne Probleme auf Linux, Windows und MacOS installieren lässt
  • erfahrene Anwender werden das Kommandozeilenwerkzeug psql zu schätzen wissen
  • ganz ohne Installationsaufwand können Sie unser Webfrontend phpPgAdmin verwenden (Achtung! Dieses enthält in der aktuellen Version einen ärgerlichen, aber unproblematischen Fehler)

MySQL:

  • der wohl bekannteste MySQL-Client heißt MySQL Workbench und läuft unter Linux, Windows und MacOS
  • erfahrene Anwender werden das Kommandozeilenwerkzeug mysql zu schätzen wissen
  • ganz ohne Installationsaufwand können Sie unser Webfrontend phpMyAdmin verwenden
3. Wie groß darf meine Datenbank werden?
  • prinzipiell erlauben wir Datenbankgrößen bis 100MB
  • nach einer guten Begründung (basierend auf der Art und Weise der zu speichernden Inhalte - eine Grobbeschreibung erfolgt von Ihnen) erlauben wir auch Datenbanken bis 512MB
  • noch größere Datenbanken sind zwar in sehr gut begründeten Ausnahmefällen möglich, werden aber nur nach vorheriger Konsultation von uns genehmigt
  • das Speichern von großen binären Objekten (BLOBs) stellt keine Begründung für ein (gewünschtes/geplantes) Überschreiten der oben genannten, maximalen Datenbankgrößen dar
4. Wird das Speichern "großer binärer Objekte" in Datenbanken (BLOBs) unterstützt?
  • auch wenn wir BLOBs nicht gutheißen und explizit von deren Verwendung abraten, tolerieren wir deren Verwendung, solange sich die konkreten Datenbanken innerhalb der akzeptierten Datenbankgrößen (siehe anderen Punkt in der FAQ) bewegen
  • eine grobe Einführung in die Problematik ist in diesem informalen Blogeintrag zu finden
5. Darf ich personenbezogene Daten in meiner Datenbank speichern?
  • eine Speicherung personenbezogener Daten ist prinzipiell möglich, setzt aber eine Überprüfung und Genehmigung durch den Datenschutzbeauftragten der Humboldt-Universität zu Berlin voraus
  • diese Genehmigung ist vor der Beantragung der Datenbank einzuholen und uns dann bei der Beantragung vorzulegen
6. Wann und wie oft werden Backups erstellt und wie lange werden diese aufgehoben?

PostgreSQL:

  • alle Datenbanken werden zweimal täglich (01:00 Uhr und 13:00 Uhr) abgezogen
  • alle Backups werden 7 Tage lang aufbewahrt
  • die nächtlichen Backups werden 60 Tage lang aufbewahrt
  • die monatsersten Backups werden ein Jahr lang aufbewahrt
  • die jahresersten Backups werden derzeit unbegrenzt aufbewahrt
  • da alle Backups auch nochmal beim zentralen Backup-Service des CMS auf Band gespeichert werden, erhöhen sich alle genannten Aufbewahrungszeiten nochmal um 60 Tage

MySQL:

  • alle Datenbanken werden einmal täglich (01:00 Uhr) abgezogen
  • alle Backups werden 60 Tage lang aufbewahrt
  • die monatsersten Backups werden ein Jahr lang aufbewahrt
  • die jahresersten Backups werden derzeit unbegrenzt aufbewahrt
  • da alle Backups auch nochmal beim zentralen Backup-Service des CMS auf Band gespeichert werden, erhöhen sich alle genannten Aufbewahrungszeiten nochmal um 60 Tage

Sybase ASE:

  • alle Datenbanken werden zweimal täglich über den zentralen Backup-Service des CMS abgezogen
  • die Backups werden 60 Tage lang aufbewahrt
7. Wie kann ich mein Datenbank-Passwort ändern?

PostgreSQL:

  • Variante 1 (empfohlen): Melden Sie sich via phpPgAdmin an, klicken Sie im rechten Fenster oben auf den Servernamen (moodledb...) und wählen Sie anschließend darunter den Punkt "Account". Nun können Sie mittels "Change Password" Ihr Passwort ändern.
  • Variante 2: Verbinden Sie sich (z.B. via phpPgAdmin) mit der Datenbank und setzen Sie folgende SQL-Anweisung ab:
    ALTER USER nutzername PASSWORD 'neues_passwort';
  • Hinweis: ihr neues Passwort muss eine Mindestlänge von 16 Zeichen aufweisen

MySQL:

  • Variante 1 (empfohlen): Melden Sie sich via phpMyAdmin an, klicken Sie oben links auf das Häuschen (Home) und wählen Sie dann aus dem Hauptfenster unter "General Settings" den Punkt "Change password".
    In der folgenden Maske geben Sie zweimal ihr neues Passwort ein und stellen bitte sicher, dass der Punkt "MySQL 4.1+" ausgewählt ist.
  • Variante 2: Verbinden Sie sich (z.B. via phpMyAdmin) mit der Datenbank und setzen Sie folgende SQL-Anweisung ab:
    SET PASSWORD = PASSWORD('neues_passwort')

Sybase ASE:

  • Verbinden Sie sich mit der Datenbank und setzen Sie folgende Anweisung ab:
    sp_password 'altes_passwort', 'neues_passwort' , nutzername, 1
  • Hinweis: ihr neues Passwort muss eine Mindestlänge von 16 Zeichen aufweisen
8. Wie kann ich einen Datenbank-Dump erzeugen?

PostgreSQL:

  • pg_dump -h moodledb.cms.hu-berlin.de -p [port]-U [dbaccount] [dbname] -c > dumpdatei.sql

MySQL:

  • mit mysqldump:
    mysqldump -h mydb.cms.hu-berlin.de -P [port] -u [dbaccount] --quick --skip-lock-tables --skip-add-locks -p [dbname] > dumpdatei.sql
  • mit phpMyAdmin:
    Melden Sie sich via phpMyAdmin an, wählen Sie links ihre Datenbank aus (wichtiger Schritt!) und klicken Sie dann oben auf "Export". Auf der dann folgenden Seite wählen/ändern Sie (nur) die Optionen "Custom" und "Add DROP TABLE / VIEW / PROCEDURE / FUNCTION / EVENT statement". Bei einem anschließenden Klick auf "Go" werden Sie nach dem Speicherort für den Dump gefragt und derselbige wird angelegt.
9. Wie kann ich einen Datenbank-Dump einspielen?

PostgreSQL:

  • psql -h moodledb.cms.hu-berlin.de -p [port] -U [dbaccount] -f dumpdatei.sql [dbname]

MySQL:

  • mysql -h mydb.cms.hu-berlin.de -P [port] -u [dbaccount] -p [dbname] < dumpdatei.sql
10. Wie kann ich mittels PHP auf meine PostgreSQL- oder MySQL-Datenbank zugreifen?
11. Wie funktioniert die Verbindung mittels stunnel?

MySQL:

  • zunächst müssen Sie bei sich lokal die Software stunnel installieren (im Folgenden wird der Weg der Inbetriebnahme unter Ubuntu-Linux gezeigt; die Anleitung lässt sich aber auf andere Betriebssysteme übertragen)
    • die Grundinstallation erfolgt einfach mittels apt-get install stunnel
    • die Konfiguration erfolgt über die neu anzulegende Datei /etc/stunnel/stunnel.conf, deren Inhalt Sie von hier übernehmen können
    • zusätzlich muss in der Datei /etc/default/stunnel4 der Wert ENABLED auf 1 gesetzt werden
    • gestartet wird der stunnel mittels /etc/init.d/stunnel4 start
  • nun können Sie mit jedweder Datenbanksoftware mittels stunnel verschlüsselt auf den MySQL-Server zugreifen und zwar unter der Adresse localhost und dem Ihnen bekannten Datenbankport
    • ein Aufruf des Kommandozeilenclients mysql sähe also beispielsweise so aus:
      mysql -h localhost -P 3306 --protocol=tcp -u dbaccount -p
12. Wie gefährlich ist eine SQL-Injection und wie kann ich einer solchen vorbeugen?
  • als SQL-Injection wird ein Angriff bezeichnet, bei dem existierende SQL-Anfragen durch kreative Variablenbelegungen modifiziert und in der Regel auch erweitert werden
  • bei einem erfolgreichen Angriff erhält der Angreifer einen vollständigen Zugriff auf die Datenbank mit den Rechten des Datenbanknutzers der die ursprüngliche SQL-Anfrage ausgelöst hätte
  • eine gute Einführung in das Problem gibt der entsprechende Wikipedia-Artikel (Achtung! Die dort genannte PHP-Schutzlösung auf Basis von mysql_*-Funktionen ist veraltet!)
  • die beste Vorbeugung gegen SQL-Injections besteht zur Zeit in der ausschließlichen Verwendung von Prepared Statements
  • eine exzellente Einführung in die Verwendung von Prepared Statements ist hier zu finden (der Text bezieht sich zwar explizit auf PHP und MySQL, der Inhalt lässt sich aber auf andere Programmiersprachen und Datenbankmanagementsysteme übertragen)
13. Wie sollte ich die Tabellen, Spalten usw. in einem selbst erstellten Datenbankschema benennen? Gibt es Standards oder hilfreiche Konventionen?

Leider gibt es keinen allgemeinen Standard für die Benennung von Datenbankelementen. Dennoch haben sich einige Konventionen durchgesetzt (während andere nach wie vor heftig diskutiert werden).

Als Empfehlung können wir Ihnen aber die von uns selbst erstellten und verwendeten Konventionen für die eigenen Datenbanken des Datenbankservices nennen:

  • grundsätzlich kein Abweichen von der ersten Normalform - d.h. nur atomare und keine strukturierten Daten in einzelnen Datenbankfeldern
  • so normalisiert wie möglich (insbesondere keine redundanten Daten) - nur da denormalisiert, wo sinnvoll (z.B. Anrede "Herr/Frau" nicht in separate Tabelle auslagern)
  • grundsätzlich alle Bezeichner ausschließlich in Kleinbuchstaben, Unterstriche sind erlaubt ("person" statt "Person"), keine Umlaute oder Sonderzeichen
  • Bezeichner nie gendern o.ä. erweitern
  • Tabellennamen im Singular ("person" statt "personen")
  • Attributnamen (außer Fremdschlüssel) mit Präfix, der Kurzform des Tabellennamens wiederspiegelt ("pers_name" statt "name")
  • Primärschlüssel ist immer Präfix + "_id" ("pers_id") und vom Typ Serial/BigSerial (PostgreSQL) bzw. Integer Auto Increment (MySQL)
  • Fremschlüsselnamen werden inklusive Präfix von der referenzierten Tabelle übernommen ("pers_id" bleibt in jeder referenzierenden Tabelle "pers_id")
  • keine Abkürzungen ("pers_geburtsjahr" statt "pers_geb")
  • keine "Anreicherung" von Attributnamen, insbesondere nicht durch Erweiterung um den Datentypen ("pers_geburtsjahr" statt "pers_geburtsjahr_int")
  • grundsätzlich soviele Constraints wie möglich (aber natürlich keine, deren Kriterien bereits durch andere abgedeckt sind)
14. Gibt es Literaturempfehlungen seitens des Datenbankservices?

Für Datenbankeinsteiger ist unserer Meinung nach das folgende Buch am Besten geeignet:

  • Mana Takahashi: "The Manga Guide to Databases" (original) - ISBN-13: 978-1593271909
  • Mana Takahashi: "Informatik-Manga: Datenbanken" (dt. Übersetzung) - ISBN-13: 978-3834809834

Bezüglich Fragen zu einem konkreten Datenbanksystems ist nach unserer Einschätzung das zugehörige Manual die beste Anlaufstelle: