kostenloser Webspace werbefrei: lima-city


Größe einer MySql-Datenbank beschränken?

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    xhochy

    Kostenloser Webspace von xhochy, auf Homepage erstellen warten

    xhochy hat kostenlosen Webspace.

    Ich m?chte bei mir im Netz meine User(Intranet) eine MySql-Datenbank pro Person verf?gbar machen. Nun soll die Person aber nur 1MB Daten abspeichern d?rfen, wie kann ich diese Sperre einrichten? (Es ist ein Linuxserver)
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. 0******a

    Nach meinem Kenntnisstand ist das bei MySQL nicht m?glich. Im Moment fallen mir dazu nur drei Workarounds ein.

    1.
    Du k?nntest die einzelnen DBs, die bei MySQL ja normalerweise als Verzeichnis im Verzeichnissystem angelegt werden, durch Linux Dateisystem Quota begrenzen, indem du den einzelnen Verzeichnissen verschiedene Linux-User als Besitzer zuordnest und diesen Linux-Usern Diskquotas auferlegst. Ich finde diese L?sung allerdings recht unsch?n.

    2.
    Du k?nntest ein Skript schreiben, dass folgendes macht:
    - Verbinden zu MySQL-DB
    - Gr?sse einer DB pr?fen
    - Wenn DB zu gross, dann dem entsprechenden User Schreibprivilegien auf MySQL-Basis entziehen
    Das Skript m?sstest du als cron-Job immer wieder anstossen. Der Vorteil dabei ist, dass alles in MySQL selbst geschieht und du keine Nebeneffekte zu bef?rchten hast. Der Nachteil ist, dass du noch extra eine Datenbank anlegen musst, in der du die Limit-Daten und die Zuordnung von MySQL-User zu DB festlegen musst.

    3.
    Das gleiche machen wie in L?sung zwei, aber die Limit-Daten und die User-DB-Beziehungen in externe Dateien schreiben (vielleicht im INI-Format oder so).

    Ich finde den Aufwand bei der zweiten L?sung vertretbar. Ich w?rde allerdings gleich daraus ein daemon machen und das mit dem cron-Job wieder vergessen. Ausserdem kannst du ja auch mal probieren, ob du die DB mit den Limit-Daten nicht einfach weglassen und daf?r eine Tabelle in der DB "mysql" anlegen kannst. Ich hab da noch nie was reingeschrieben (ausser ?nderungen an bestehenden Tabellen/Datens?tzen vorzunehmen) und habe keine Ahnung, wie MySQL darauf reagiert. Also nicht mich verantwortlich machen, wenn du dir deine MySQL-Installation zerschiesst ;-)
    Die dritte L?sung ist zwar an sich auch ganz gut und ok, allerdings hast du dann mal wieder mehr Konfigurationsdateien, was ich pers?nlich immer sehr nervig finde. Ist aber auf jeden Fall ein vern?nftiger Zwischenschritt zum Testen auf dem Weg zur L?sung 2.
  4. hmm mir f?llt da grad was anderes ein!

    wie lest man die gr??e einer datenbank eigentlich aus?
    das geht doch auch per PHP!

    mfg
    .i
  5. Ich bin mir ziemlich sicher mal was davon geh?rt zu haben. Aber leider ist mein Ged?chtnis keine Festplatte(, wobei meine auch nicht mehr die Daten von fr?her enth?lt ^^).
    Am Besten fragste mal im IRC nach.
    Channel :
    #mysql, #mysql.de oder so ?hnlich
    #php.de

    Oder einfach mal den lord fragen oder die Dokumentation von MySQL durchforsten/durchlesen.

    MfG Lucas

    edit :
    @poinit :
    Ja, das geht mit PHP, aber auch mit Delphi, Visual Basic, C++ etc. ;-)

    Beitrag ge?ndert am 2.03.2006 22:01 von lucas9991
  6. 0******a

    Im IRC? Warum nicht hier auf die L?sung warten...?
    mysql_query("show table status");

    Im Ergebnis in der Spalte Data_length steht dann die Gr?sse der Tabelle. Dies muss allerdings nicht der Gr?sse der in der Tabelle enthaltenen Daten entsprechen. Um die Gr?sse der wirklich vorhandenen Daten in einer Tabelle herauszufinden, muss man einen kompletten select (select * from blabla) machen und dann die Gr?sse der einzelnen Elemente jeder Zeile zusammenz?hlen. Bei Spalten des Types text oder varchar halt mit strlen() in PHP bzw. length() in MySQL arbeiten. Bei int-Typen muss man die Breite des Typen wissen. Dazu vorher einmal "describe table blabla" aufrufen.

  7. Im IRC? Warum nicht hier auf die L?sung warten...?
    mysql_query("show table status");

    [...]

    Weil du der einzigste bist, der ein bi?chen mehr von der Materie versteht bei lima versteht. ;-)
    Im IRC sitzten ein paar mehr rum, die auch gr??ere Projekte programmiert haben und ziemlich viel Erfahrung haben.

    MfG Lucas
  8. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!