MySQL通过表空间限制用户磁盘空间

MySQL通过表空间限制用户磁盘空间

我正在尝试弄清楚如何在 MySQL 中为用户设置磁盘空间限制。我想要的是,例如,管理员为用户 A 分配 1G 磁盘空间,如果 A 用完了 1G 磁盘空间,MySQL 将不允许 A 插入任何内容。我在 Google 上搜索了这个问题,有人提到可以使用表空间来解决,但没有提到如何解决。任何帮助都非常感谢。

答案1

据我所知,MySQL 没有原生的磁盘配额支持(并且限制数据库的磁盘使用量严格配额听起来就像是灾难的根源)。

您可以使用 MySQL 磁盘使用情况实用程序报告磁盘使用情况 https://dev.mysql.com/doc/mysql-utilities/1.5/en/mysqldiskusage.html

答案2

您可以将 mysql/datadir 放在每个用户主目录中,例如
/home/user1 或 DATADIR="/var/www/${VHOST}/mysql/datadir",然后为每个用户的磁盘空间设置限制

同样,每个用户都会有他的 sock 和 pid 文件,我使用它来执行以下操作:

mysqld --skip-ndbcluster --user=mysql --skip-grant-tables --basedir=/usr --datadir=${DATADIR} --skip-innodb --skip-bdb --skip-networking --max_allowed_packet=8M --net_buffer_length=16K --socket=${sockfile} --pid-file=${pidfile} &>/dev/null

相关内容