![MySQL通过表空间限制用户磁盘空间](https://linux22.com/image/697373/MySQL%E9%80%9A%E8%BF%87%E8%A1%A8%E7%A9%BA%E9%97%B4%E9%99%90%E5%88%B6%E7%94%A8%E6%88%B7%E7%A3%81%E7%9B%98%E7%A9%BA%E9%97%B4.png)
我正在尝试弄清楚如何在 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