限制 MySQL 用户的空间

限制 MySQL 用户的空间

我维护一个 MySQL 服务器。有一个用户的数据库大小迅速增长。由于他使用的是 InnoDB,/data/mysql/ibdata1 文件已超出比例。我可以安装一个小分区并将他的数据库放在那里,但 ibdata1 文件似乎在所有数据库中共享。

我关心的是如何限制特定用户使用超出其定义的数据库空间。

答案1

目前还没有现成的解决方案。但您可以执行以下操作:

  1. 获取用户拥有的表的data_length和(这是数据文件在文件系统中使用的空间量)index_lengthshow table status
  2. 将所有数据库的这些数字相加
  3. 如果达到限制,则删除该用户的 INSERT 权限,这样他就不能再插入新数据。

但请记住,从 InnoDB 表中删除数据不会释放文件系统中的空间。因此,如果您的用户达到了限制,他将无法采取任何措施。(除非转储所有 InnoDB 表,删除它们并重新导入它们)

相关内容