4.1.2 授予备份管理员MySQL权限

mysqlbackup命令使用和选项提供的凭据连接到 MySQL 服务器 。指定需要一定的权限。您可以创建一个具有一组有限权限的新用户,或者使用一个管理帐户,例如 root。以下是 mysqlbackup所需的权限: --user--passworduser

  • mysqlbackup连接到服务器 的 MySQL 用户的最低权限 包括:

    • SELECT在所有数据库和表上,用于保护备份免受并行 DDL 操作引起的不一致的表锁。

    • BACKUP_ADMIN在所有数据库和表上。

    • RELOAD在所有数据库和表上。

    • SUPER,以启用和禁用日志记录,并优化锁定以最大程度地减少对数据库处理的中断。

    • REPLICATION CLIENT, 检索 与备份一起存储 的二进制日志位置。

    • PROCESS, 处理带有子句的 DDL 语句ALGORITHM = INPLACE

    • CREATE, INSERT, DROP, 和UPDATE 在桌子上mysql.backup_progressmysql.backup_history, 也 SELECTALTERmysql.backup_history

    要创建一个 MySQL 用户(mysqlbackup在本例中)并为用户设置上述权限以从本地主机连接,请从mysql客户端程序发出如下语句:

    CREATE USER 'mysqlbackup'@'localhost' IDENTIFIED BY 'password';
    GRANT SELECT, BACKUP_ADMIN, RELOAD, PROCESS, SUPER, REPLICATION CLIENT ON *.* 
        TO `mysqlbackup`@`localhost`;
    GRANT CREATE, INSERT, DROP, UPDATE ON mysql.backup_progress TO 'mysqlbackup'@'localhost'; 
    GRANT CREATE, INSERT, DROP, UPDATE, SELECT, ALTER ON mysql.backup_history 
        TO 'mysqlbackup'@'localhost';
  • 使用 MySQL Enterprise Backup 的特定功能需要以下额外权限:

    • 使用 可传输表空间 (TTS)备份和恢复 InnoDB 表:

      • LOCK TABLES用于备份表。CREATE用于恢复表。

      • DROP用于在由于某些原因恢复失败时删除表。

      • FILE用于恢复服务器数据目录之外的外部表空间中的表。

    • 使用系统备份到磁带 (SBT) API 创建磁带备份

      • CREATE, INSERT, DROP, 和 UPDATEmysql.backup_sbt_history桌子上

    • 使用加密的 InnoDB 表

    • 用于备份和恢复用户创建的非 InnoDB 表:

      • LOCK TABLES在包含用户创建的非 InnoDB 表的所有模式上

    • 使用重做日志归档进行备份:

      • INNODB_REDO_LOG_ARCHIVE 调用 innodb_redo_log_archive_start() 函数。

    • 对于第 5.1.4 节, 非 TTS 备份的“表级恢复 (TLR)”(对于 MySQL Enterprise Backup 8.0.20 及更高版本):

      • INSERTALTER更新表格

    如果您正在使用需要它们的功能,请设置这些额外权限。mysql要设置所有这些,请从客户端程序 发出如下语句 :

    GRANT LOCK TABLES, CREATE, DROP, FILE, INSERT, ALTER ON *.* TO 'mysqlbackup'@'localhost';
    GRANT CREATE, DROP, UPDATE ON mysql.backup_sbt_history TO 'mysqlbackup'@'localhost';
    GRANT ENCRYPTION_KEY_ADMIN ON *.* TO 'mysqlbackup'@'localhost';
    GRANT INNODB_REDO_LOG_ARCHIVE ON *.* TO 'mysqlbackup'@'localhost';
  • 有关将 MySQL Enterprise Backup 与 Group Replication 设置一起使用所需的权限,请参阅 第 9 章,将 MySQL Enterprise Backup 与 Group Replication 一起使用

  • 服务器升级后可能还需要以下额外权限:

    • 在从 8.0.18 或更早版本升级且之前已通过 MySQL Enterprise Backup 备份的 MySQL Server 上首次使用 MySQL Enterprise Backup 8.0.19 或更高版本时

      • ALTERmysql.backup_progress

      • CREATE, INSERT, 和 DROPmysql.backup_progress_old

      • CREATE, INSERT,DROPALTERmysql.backup_progress_new

      通过在mysql客户端 发出这些示例语句来授予这些权限:

      GRANT ALTER ON mysql.backup_progress TO 'mysqlbackup'@'localhost';
      GRANT CREATE, INSERT, DROP ON mysql.backup_progress_old TO 'mysqlbackup'@'localhost';
      GRANT CREATE, INSERT, DROP, ALTER ON mysql.backup_progress_new TO 'mysqlbackup'@'localhost';
      笔记

      如果您正在使用多主组复制设置,请确保在所有主节点上授予这些权限;另请参阅 第 9 章,将 MySQL Enterprise Backup 与 Group Replication 结合使用

      这些权限用于尝试将 mysql.backup_progress表迁移到更新的格式(有关详细信息,请参阅 附录 F,备份进度表更新),并且在 MySQL Enterprise Backup 8.0.19 或更高版本的第一次备份操作发生后不再需要它们在服务器上,到那时它们可以被撤销。

    • 在从 8.0.11 或更早版本升级且之前已通过 MySQL Enterprise Backup 备份的 MySQL Server 上首次使用 MySQL Enterprise Backup 8.0.12 或更高版本时

      • CREATE, INSERT, 和 DROPmysql.backup_history_old

      • CREATE, INSERT,DROPALTERmysql.backup_history_new

      通过在mysql客户端 发出这些示例语句来授予这些权限:

      GRANT CREATE, INSERT, DROP ON mysql.backup_history_old TO 'mysqlbackup'@'localhost';
      GRANT CREATE, INSERT, DROP, ALTER ON mysql.backup_history_new TO 'mysqlbackup'@'localhost';
      笔记

      如果您正在使用多主组复制设置,请确保在所有主节点上授予这些权限;另请参阅 第 9 章,将 MySQL Enterprise Backup 与 Group Replication 结合使用

      这些权限用于尝试将 mysql.backup_history表迁移到更新的格式(有关详细信息,请参阅 附录 D,备份历史表更新),并且在 MySQL Enterprise Backup 8.0.12 或更高版本的第一次备份操作发生后不再需要它们在服务器上,到那时它们可以被撤销。

    • 当第一次使用 SBT API和 MySQL Enterprise Backup 8.0.21 或更高版本 在已从 8.0.20 或更早版本升级并且在使用 SBT API之前已由 MySQL Enterprise Backup 备份的 MySQL 服务器上执行备份时

      • ALTERmysql.backup_sbt_history

      • CREATE, INSERT, 和 DROPmysql.backup_sbt_history_old

      • CREATE, INSERT,DROPALTERmysql.backup_sbt_history_new

      通过在mysql客户端 发出这些示例语句来授予这些权限:

      GRANT ALTER ON mysql.backup_sbt_history TO 'mysqlbackup'@'localhost';
      GRANT CREATE, INSERT, DROP ON mysql.backup_sbt_history_old TO 'mysqlbackup'@'localhost';
      GRANT CREATE, INSERT, DROP, ALTER ON mysql.backup_sbt_history_new TO 'mysqlbackup'@'localhost';
      笔记

      如果您正在使用多主组复制设置,请确保在所有主节点上授予这些权限;另请参阅 第 9 章,将 MySQL Enterprise Backup 与 Group Replication 结合使用

      这些权限用于尝试将 mysql.backup_sbt_history表迁移到更新的格式(有关详细信息,请参阅 附录 E,SBT 备份历史表更新),并且在 MySQL Enterprise Backup 8.0.21 或更高版本使用SBT API 已在服务器上发生,此时它们可以被撤销。

笔记

确保 没有为mysqlbackup用于访问服务器 MAX_QUERIES_PER_HOUR的用户设置限制,否则备份操作可能会意外失败。