Aller au contenu

Sujets conseillés

Posté

Salut à tous,

voila, j'ai écrit un petit script qui me permet d'ajouter un "compte web" (apache/php/cgi/ftp local & publique/compte mail & ssh) ; jusque là, tout va bien :)

Mais.. car il y a toujours un mais, je voudrais limité la création de la base de données (1 par personne) à une taille fixe, 100Mo.

Comment pourrais-je limiter la base de facon automatique ?

j'utilise (pour créer le compte mySQL) :

/usr/bin/mysqladmin -u root -p $rootpass create $webaccount_name
/usr/bin/mysql -u root --password=$rootpass mysql <<END_COMMANDS
GRANT ALL PRIVILEGES ON $webaccount_name.* TO "$webaccount_name"@"$webaccount_domain" IDENTIFIED BY '$webaccount_password';
FLUSH PRIVILEGES;
END_COMMANDS

merci; ;)

Posté

Salut oxyd-x,

MySql n'offre pas de possibilité de quotas en natif. Il faudra donc te baser sur les quotas Linux ou une approche équivalente.

Par exemple, pour éviter les quotas qui forceraient de changer le groupe des fichiers mysql et présentent d'autres inconvénients (voir en fin de post), tu pourrais créer un script qui serait lancé chaque nuit par le cron.

Ce script ferait simplement un "du -s" sur le répertoire mysql comprenant la base de l'utilisateur, et si le résultat est supérieur à ta limite, tu lances un script sql (ou une commande mysqladmin) pour révoquer les droits de INSERT et UPDATE sur cette base.

Cela permettrait à ton utilisateur d'utiliser les SELECT, ainsi que les DELETE s'il veut/peut faire du ménage.

Cela n'empêchera pas un utilisateur de faire "exploser" la taille de sa base d'un jour à l'autre... mais une fois la taille dépassée tu peux aussi mettre d'autres actions en place, par exemple désactiver le compte en cas de dépassement supérieur à une semaine.

Cela évite aussi les quotas Linux, parce qu'empêcher mysql d'écrire dans les tables n'est pas une bonne idée et risque de donner des bases instables.

Dan

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...