【问题标题】:Mysql user privilege for restore from mysqldump从 mysqldump 恢复的 Mysql 用户权限
【发布时间】:2016-06-10 04:41:28
【问题描述】:

mysql db 用户使用 mysqldump 文件和恢复所需的最低权限是什么。

  1. 在我的情况下无法使用 root db 用户。
  2. 已使用 mysqldump 实用程序对转储文件中的所有模式进行了完整备份。
  3. 需要知道授予 db 用户(除了 root db 用户)所需的最低权限,以便它可以用于从 mysqldump 文件进行恢复。

【问题讨论】:

    标签: mysql


    【解决方案1】:

    如果没有SUPER 权限,则无法将完整的、未修改的转储文件恢复到 MySQL 服务器。

    “root”用户不是一个神奇的用户。它恰好是一个默认创建并拥有GRANT ALL PRIVILEGES ON *.* ... WITH GRANT OPTION 的用户。另一个用户可以被赋予相同的权限。

    恢复数据库本质上意味着删除服务器上的所有内容并用其他内容替换它,包括所有用户帐户,因此需要SUPER

    如果对转储文件进行了某些修改,例如删除所有DEFINER 语句,以及修改 mysql 模式的处理方式,则可以使用更有限的权限,但这些修改是具有系统特定考虑的高级主题.

    【讨论】:

      【解决方案2】:

      我从SUPERINSERTALTER开始,并尝试反复添加新的,直到恢复成功完成。

      这就是我最终得到的结果:

      • SUPER
      • ALTER
      • INSERT
      • CREATE
      • DROP
      • LOCK TABLES
      • REFERENCES
      • SELECT

      如果您有例程和触发器,那么您还需要这两个:

      • CREATE ROUTINE
      • TRIGGER

      希望这会有所帮助。

      【讨论】:

        【解决方案3】:

        来自Mysql官网:

        mysqldump 至少需要转储表的 SELECT 权限, SHOW VIEW 用于转储视图,TRIGGER 用于转储触发器和 LOCK 如果不使用 --single-transaction 选项,则为 TABLES。某些选项 可能需要选项描述中所述的其他权限。

        --单笔交易

        此选项将事务隔离模式设置为 REPEATABLE READ 和 转储前向服务器发送 START TRANSACTION SQL 语句 数据。它仅对诸如 InnoDB 之类的事务表有用, 因为那时它会转储当时数据库的一致状态 当 START TRANSACTION 发出时没有阻止任何应用程序。

        总之,特权是:

        • 选择(必填)
        • 锁定表(必需)
        • 显示视图和触发器(可选)

        【讨论】:

        • 问题是关于恢复,而不是转储。
        • @Michael-sqlbot 感谢您指出,我没有注意到。
        猜你喜欢
        • 2010-12-12
        • 2016-03-18
        • 1970-01-01
        • 2010-12-15
        • 1970-01-01
        • 2014-01-30
        • 1970-01-01
        • 1970-01-01
        • 2014-06-10
        相关资源
        最近更新 更多