Ошибки

Ошибки mysqldump: PROCESS privilege и Access denied when using LOCK TABLES

mysqldump выгружает базу в файл, и ему нужны права, которых у пользователя сайта может не быть. Две ошибки лечатся ключами команды, без новых прав.

Обновлено 10.10.2026≈ 3 мин чтения
Содержание 8

Ошибка про PROCESS и tablespaces

mysqldump: Error: 'Access denied; you need (at least one of) the PROCESS privilege(s) for this operation' when trying to dump tablespaces

mysqldump пытается выгрузить сведения о табличных пространствах — служебных файлах базы. Для этого в 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 connect

mysqldump не смог войти в базу: неверный пароль или пользователь. Разбор — на странице ошибки 1045.

Если сайт на обычном хостинге

Если mysqldump на хостинге доступен по SSH, используйте ту же команду. Если доступа по SSH нет, копию базы делают в панели хостинга — как, сказано в статье Резервные копии сайта.

Тексты ошибок и настройки сверены с исходным кодом MySQL 8.0.46 и MariaDB 10.11.14 — эти версии ставятся из пакетов Ubuntu 24.04. В других версиях строки могут немного отличаться.

Источники

Сверено 10 октября 2026 года.

Что почитать дальше

Проверено и обновлено: 10.10.2026