4.1.2 Предоставление привилегий MySQL администратору резервного копирования
Команда mysqlbackup подключается к серверу MySQL с использованием учетных данных, предоставленных параметрами --user и --password. Указанному user требуются определенные привилегии. Можно создать нового пользователя с ограниченным набором привилегий или использовать учетную запись администратора, например, root. Ниже приведены необходимые привилегии для mysqlbackup:
-
Минимальные привилегии для пользователя MySQL, с которым mysqlbackup подключается к серверу, включают:
SELECTдля всех баз данных и таблиц, для блокировки таблиц, которая защищает резервные копии от несогласованности, вызванной параллельными операциями DDL.BACKUP_ADMINдля всех баз данных и таблиц.RELOADдля всех баз данных и таблиц.SUPERдля включения и отключения ведения журнала и оптимизации блокировки для минимизации перерывов в обработке базы данных.REPLICATION CLIENTдля получения позиции, которая хранится вместе с резервной копией.PROCESSдля обработки операторов DDL с клаузойALGORITHM = INPLACE.CREATE,INSERT,DROPиUPDATEдля таблицmysql.backup_progressиmysql.backup_history, а такжеSELECTиALTERдляmysql.backup_history.
Чтобы создать пользователя MySQL (
mysqlbackupв данном примере) и установить вышеупомянутые привилегии для подключения пользователя с localhost, выполните операторы, подобные следующим, из программы-клиента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:
-
Для использования для резервного копирования и восстановления таблиц InnoDB:
LOCK TABLESдля резервного копирования таблиц.CREATEдля восстановления таблиц.DROPдля удаления таблиц, если восстановление завершится неудачно по каким-либо причинам.FILEдля восстановления таблиц в внешних табличных пространствах вне каталога данных сервера.
-
Для создания резервных копий на ленте с помощью API System Backup to Tape (SBT):
CREATE,INSERT,DROPиUPDATEдля таблицыmysql.backup_sbt_history
-
Для работы с зашифрованными таблицами InnoDB:
для включения вращения ключей шифрования InnoDB.
-
Для резервного копирования и восстановления созданных пользователем таблиц, не являющихся таблицами InnoDB:
LOCK TABLESдля всех схем, содержащих созданные пользователем таблицы, не являющиеся таблицами InnoDB
-
Для использования для резервных копий:
для вызова функцииINNODB_REDO_LOG_ARCHIVE.innodb_redo_log_archive_start()
-
Для раздела 5.1.4, “Восстановление на уровне таблиц (TLR)”:
INSERTиALTERдля обновления таблиц
Установите эти дополнительные привилегии, если вы используете функции, которые их требуют. Чтобы установить все из них, выполните операторы, подобные следующим, из программы-клиента
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.
-
После обновления сервера могут потребоваться следующие дополнительные привилегии:
-
При первом использовании MySQL Enterprise Backup 8.4 на сервере MySQL, обновленном с версии 8.0.18 или более ранней и уже резервированном MySQL Enterprise Backup:
ALTERдляmysql.backup_progress.CREATE,INSERTиDROPдляmysql.backup_progress_old.CREATE,INSERT,DROPиALTERдляmysql.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';ПримечаниеЕсли вы работаете с настройкой Group Replication с несколькими первичными узлами, убедитесь, что эти привилегии предоставлены на всех первичных узлах; см. также Главу 9, Использование MySQL Enterprise Backup с Group Replication.
Эти привилегии необходимы для попытки миграции таблицы
mysql.backup_progressв новый формат (см. Приложение F, Обновление таблицы хода резервного копирования для получения подробной информации), и они больше не нужны после первой операции резервного копирования MySQL Enterprise Backup 8.4 на сервере, после чего они могут быть отозваны. -
При первом использовании MySQL Enterprise Backup 8.4 на сервере MySQL, обновленном с версии 8.0.11 или более ранней и уже резервированном MySQL Enterprise Backup:
CREATE,INSERTиDROPдляmysql.backup_history_old.CREATE,INSERT,DROPиALTERдляmysql.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';ПримечаниеЕсли вы работаете с настройкой Group Replication с несколькими первичными узлами, убедитесь, что эти привилегии предоставлены на всех первичных узлах; см. также Главу 9, Использование MySQL Enterprise Backup с Group Replication.
Эти привилегии необходимы для попытки миграции таблицы
mysql.backup_historyв новый формат (см. Приложение D, Обновление таблицы истории резервных копий для получения подробной информации), и они больше не нужны после первой операции резервного копирования MySQL Enterprise Backup 8.4 на сервере, после чего они могут быть отозваны. -
При первом выполнении резервного копирования с использованием API SBT с MySQL Enterprise Backup 8.4 на сервере MySQL, обновленном с версии 8.0.20 или более ранней и уже резервированном MySQL Enterprise Backup с использованием API SBT:
ALTERдляmysql.backup_sbt_history.CREATE,INSERTиDROPдляmysql.backup_sbt_history_old.CREATE,INSERT,DROPиALTERдляmysql.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';ПримечаниеЕсли вы работаете с настройкой Group Replication с несколькими первичными узлами, убедитесь, что эти привилегии предоставлены на всех первичных узлах; см. также Главу 9, Использование MySQL Enterprise Backup с Group Replication.
Эти привилегии необходимы для попытки миграции таблицы
mysql.backup_sbt_historyв новый формат (см. Приложение E, Обновление таблицы истории резервных копий SBT для получения подробной информации), и они больше не нужны после первой операции резервного копирования MySQL Enterprise Backup 8.4 с использованием API SBT на сервере, после чего они могут быть отозваны.
-
Убедитесь, что ограничение MAX_QUERIES_PER_HOUR не установлено для пользователя, используемого командой mysqlbackup для доступа к серверу, иначе операции резервного копирования могут завершиться неожиданно.
© 2025 Oracle
Licensed under the GPLv2 License.