Ошибки mysqldump: PROCESS privilege и Access denied when using LOCK TABLES
mysqldump выгружает базу в файл, и ему нужны права, которых у пользователя сайта может не быть. Две ошибки лечатся ключами команды, без новых прав.
Содержание 8
Ошибка про PROCESS и tablespaces
mysqldump: Error: 'Access denied; you need (at least one of) the PROCESS privilege(s) for this operation' when trying to dump tablespacesmysqldump пытается выгрузить сведения о табличных пространствах — служебных файлах базы. Для этого в MySQL с версии 8.0.21 нужно право PROCESS на весь сервер. Выгрузка базы после этой ошибки продолжается, но сообщение будет при каждом запуске.
Сайту табличные пространства не нужны. Добавьте в команду ключ --no-tablespaces, и mysqldump не будет их выгружать.
Ошибка 1044 when using LOCK TABLES
mysqldump: Got error: 1044: Access denied for user 'ivan'@'localhost' to database 'base' when using LOCK TABLESПеред выгрузкой mysqldump блокирует таблицы, чтобы их не меняли во время копирования. На это нужно право LOCK TABLES, а его у пользователя нет. Добавьте ключ --single-transaction: с ним mysqldump не блокирует таблицы, а снимает копию в одной транзакции.
Команда, которая обходится без этих прав
mysqldump -u ivan -p --single-transaction --no-tablespaces --default-character-set=utf8mb4 base > base.sqlВместо ivan подставьте своего пользователя базы, вместо base — имя базы, вместо base.sql — имя своего файла. Команда спросит пароль пользователя базы. Файл base.sql появится в той папке, где вы выполнили команду.
--single-transaction— не блокировать таблицы.--no-tablespaces— не выгружать табличные пространства.--default-character-set=utf8mb4— сохранить русские буквы и эмодзи без искажений.
Если права всё же нужны
На своём VPS можно выдать пользователю право блокировать таблицы только в его базе. Войдите в базу:
sudo mysqlЕсли система спросит пароль, введите пароль своего пользователя на сервере, а не пароль базы. Символы при вводе не видны — так и должно быть, просто наберите пароль и нажмите Enter. Строка ввода сменится на mysql> у MySQL или на MariaDB [(none)]> у MariaDB: теперь можно вводить команды для базы. Каждая команда заканчивается точкой с запятой. Выйти обратно — команда exit.
и выполните:
GRANT LOCK TABLES ON base.* TO 'ivan'@'localhost';Право PROCESS выдавать не советуем: оно на весь сервер и позволяет видеть запросы других пользователей. Ключа --no-tablespaces достаточно.
Ошибка when trying to connect
mysqldump: Got error: 1045: Access denied for user 'ivan'@'localhost' (using password: YES) when trying to connectmysqldump не смог войти в базу: неверный пароль или пользователь. Разбор — на странице ошибки 1045.
Если сайт на обычном хостинге
Если mysqldump на хостинге доступен по SSH, используйте ту же команду. Если доступа по SSH нет, копию базы делают в панели хостинга — как, сказано в статье Резервные копии сайта.
Тексты ошибок и настройки сверены с исходным кодом MySQL 8.0.46 и MariaDB 10.11.14 — эти версии ставятся из пакетов Ubuntu 24.04. В других версиях строки могут немного отличаться.
Источники
- Исходный код MySQL 8.0.46: mysqldump.cc — тексты ошибок mysqldump.
- Исходный код MariaDB 10.11.14: mysqldump.c — mysqldump в MariaDB.
- Документация MySQL 8.0: mysqldump — какие права нужны и что делают ключи.
- Исходный код MySQL 8.0.46: messages_to_clients.txt — тексты ошибок сервера MySQL.
Сверено 10 октября 2026 года.
Что почитать дальше
Проверено и обновлено: 10.10.2026