Кажется странным но когда делаешь

mysqldump -h host -u backup -p database | gzip > /tmp/test.gz

я получил

Access denied for user 'backup'@'%' (using password: YES) when using LOCK TABLES

При соединении с

mysqldump -h host -u backup -p database

я получил

mysql> lock tables booking read;
Query OK, 0 rows affected (0.00 sec)

mysql> unlock tables;
Query OK, 0 rows affected (0.00 sec)

так что, похоже, разрешение есть

show grants for current_user()

возвращается

GRANT SELECT, LOCK TABLES, SHOW VIEW ON *.* TO 'backup'@'%' IDENTIFIED BY PASSWORD 'password here'

Есть ли причина, по которой это не сработало бы?

РЕДАКТИРОВАТЬ

Добавление разрешения на перезагрузку я могу сделать

FLUSH TABLES WITH READ LOCK поэтому нет проблем с разрешением

1 ответ1

0

Из документации MySQL по mysqldump

Для mysqldump требуется как минимум привилегия SELECT для дампированных таблиц, SHOW VIEW для дампированных представлений, TRIGGER для дампированных триггеров и LOCK TABLES, если опция --single -action не используется. Для некоторых опций могут потребоваться другие привилегии, как указано в описании опций.

Вы сказали в своем комментарии

Есть триггер, но он не нужен (в резервной копии)

Вам либо нужна привилегия TRIGGER, либо вы можете выполнить mysqldump следующим образом

mysqldump -h host -u backup -p database --skip-triggers | gzip > /tmp/test.gz

Попробуйте!

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .