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 9.2 на сервере 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 9.2 на сервере, после чего их можно отозвать. -
При первом использовании MySQL Enterprise Backup 9.2 на сервере 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 9.2 на сервере, после чего их можно отозвать.
-
Убедитесь, что ограничение MAX_QUERIES_PER_HOUR не установлено для пользователя, используемого командой mysqlbackup для доступа к серверу, иначе операции резервного копирования могут завершиться неожиданно.
© 2025 Oracle
Licensed under the GPLv2 License.