How To Setup Disk Quotas For MySQL Database
This is a user contributed article.
MySQL server has no support for preventing disk from getting filled up. You need to depend upon external configurations. Let us see how to use standard Linux disk quota to limit user database size.
Suppose you have a user foo on the system as well as on MySQL. Now how do you limit space for foo?
Step #1: Create a separate directory for databases in foo's home say /home/foo/dbs with ownership mysql:foo and permissions 3755:
# mkdir /home/foo/dbs && chown mysql:foo /home/foo/dbs && chmod 3755 /home/foo/dbs
Step #2: Now move all foo's databases from /var/lib/mysql to /home/foo/dbs
# mkdir /root/backup
# cp -avr /var/lib/mysql/* root/backup
# mv /var/lib/mysql/database-name /home/foo/dbs/
# chown -Rf mysql:foo /home/foo
# chmod -Rf 3755 /home/foo
# ln -s /var/lib/mysql/database-name /home/foo/dbs/database-name -v
Finally, restart mysqld. If mysqld starts with OK status, then its working else it isn't:
# /etc/init.d/mysqld restart
NOTE- I AM NOT RESPONSIBLE FOR ANY DAMAGES OCCURRED & TO TEST THIS TRY RESTARTING mysqld. Always backup database before trying something new.
Other tools
- MySQL Quota-Tool : The MySQL Quota-Tool helps you to set a size limit on MySQL databases. It works by checking the size of each database and revoking the INSERT- and CREATE-priveleges for the databases, which exceed the given size limit. When the size of the database falls below the given limit, the INSERT- and CREATE-priveleges are granted again.
- MySQL Quota Daemon : MySQL Quota Daemon is a lightweight tool for limiting database sizes.
- Developing a MySQL Quota Daemon : One of the drawbacks of MySQL is the lack of a real quota system. This article will cover how our ISP was able to solve this problem and keep track of our customers' databases. With this completely automated solution, many hours of administration work was avoided.
- Feel free to add your tools and tricks in the comments.
About the author: This article is contributed by Nilesh.
Want to stay up to date with the latest Linux tips, news and announcements? Subscribe to our free e-mail newsletter or RSS feed to get all updates.
You can Email this page to a friend.
You may also be interested in other helpful articles:
- Copy MySQL database from one server to another remote server
- Install and configure MySQL on Windows XP or Vista or 2003 server
- Save time use MySQL auto completion for database or table names
- Sun To Release New MySQL Version With Partitioning and Replication Features
- MySql backup script
Discussion on This Article:
Leave a Reply
We encourage your comments, and suggestions. But please stay on topic, be polite, and avoid spam. Thank you very much for stopping by our site!
Tags: database size, databases, disk quota, linux disk, mysql database quote, mysql disk quote



How will MySQL react when the quota kicks in? Will MySQL crash (I’ve googled it and a couple of people complained about MySQL crashing when the disk runs out of space)? What happens if MySQL is half-way through an insert and quotas kick in? Does it roll back the insert?
Johnathan, i have no solution for it.
Jonathan,
A few years back I used to work for a large ISP and we used to jail both MySQL and apache (apache request proxy via 2-3 backends) using FreeBSD jail. Each user has 2GiB disk space for MySQL. MySQL will stop private instance when user reaches her disk quota. This way it was only affecting a single user.
Today you can do the same thing using easily with XEN or other VPS software.
HTH