【问题标题】:Is it necessary to drop temporary tables in MySQL?是否有必要在 MySQL 中删除临时表?
【发布时间】:2021-07-07 09:51:28
【问题描述】:

我在删除 临时 表时遇到问题。用户帐户没有“删除”权限。出于安全原因,我不想授予该权限。

我试图找到像“暂时放弃”这样的特权,但没有。似乎唯一的选择是删除所有“删除表”语句。我知道临时表会在数据库会话结束后自动删除。

但是,我不确定将这项工作留给 MySQL 是否有任何副作用。请指教。

【问题讨论】:

  • 正如这里提到的,dev.mysql.com/doc/refman/5.1/en/… 为了将临时表和非临时表的权限分开,针对这种情况的常见解决方法是创建一个专用于使用临时表的数据库。然后对于该数据库,可以授予用户 CREATE TEMPORARY TABLES 权限,以及该用户执行的临时表操作所需的任何其他权限。

标签: mysql


【解决方案1】:

一旦您与数据库断开连接,临时表就会自动删除

TEMPORARY 表只对当前连接可见,并在连接关闭时自动删除

http://dev.mysql.com/doc/refman/5.1/en/create-table.html

所以 - 创建它们,使用它们,不要打扰它们的删除

【讨论】:

  • 如果您使用连接池(hikari、c3p0 等),那么您的连接打开时间可能会比您预期的要长,所以要小心。在这种情况下,手动删除临时表可能是有意义的。
  • @Alden 正确配置软件是有意义的,这样一切才能按预期工作。连接池必须在客户端断开连接时重置连接。
【解决方案2】:

它将使用当前机器的 RAM 空间。 所以更好的想法是在下一步中删除临时表,一旦它的使用结束

【讨论】:

    【解决方案3】:

    如果用户有 CREATE TEMPORARY TABLES 权限,他可以执行 DROP TABLE、INSERT、UPDATE 和 SELECT。

    请看:https://dev.mysql.com/doc/refman/5.7/en/privileges-provided.html#priv_create-temporary-tables

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-27
      • 2014-07-14
      • 1970-01-01
      • 2010-10-14
      相关资源
      最近更新 更多