Ошибка: mysqldump: 1044 Access denied when using LOCK TABLES
- AJIekceu4
- 05.05.2019
- 8 669
- 1
- 3
- 3
- 0
В данной статье пойдет речь об ошибке 1044 Access denied when using LOCK TABLES, которую вы можете получить при попытке создать резервную копию с помощью утилиты mysqldump.
Описание
Полностью текст ошибки выглядит следующим образом:
mysqldump: Got error: 1044: Access denied for user 'user'@'localhost' to database 'database_name' when using LOCK TABLES
Как видно из текста ошибки, проблема заключается в том, что пользователь, под которым вы пытаетесь сделать резервную копию, не обладает правами на "LOCK TABLES". Вот что говорит мануал, по этому поводу:
For each dumped database, lock all tables to be dumped before dumping them. The tables are locked with READ LOCAL to permit concurrent inserts in the case of MyISAM tables. For transactional tables such as InnoDB, --single-transaction is a much better option than --lock-tables because it does not need to lock the tables at all.
Because --lock-tables locks tables for each database separately, this option does not guarantee that the tables in the dump file are logically consistent between databases. Tables in different databases may be dumped in completely different states.
Исправляем ошибку
Как видно из описания, решить данную проблему можно как минимум двумя разными способами.
Способ (быстрый)
Достаточно добавить к mysqldump аргумент --single-transaction
, т.е. целиком команда для создания резервной копии будет выглядеть примерно так:
mysqldump -u user -p --single-transaction database_name > database_backup.sql
Способ (чуть дольше)
Необходимо просто выдать тому пользователю (в нашем примере "user"), под которым мы пытаемся создать резервную копию права на "LOCK TABLES" на ту базу(-ы), резервную копию которой(-ых), мы пытаемся создать. Для этого, необходимо подключиться под учетной записью root к MySQL серверу и выдать нужные права. Делается это следующим образом:
1) Подключаемся к MySQL серверу под учетной записью root
mysql -u root -p
2) Выдаем нужные права для пользователя, под которым мы пытаемся сделать резервную копию
GRANT LOCK TABLES ON database_name.* TO 'user'@'localhost';
database_name
- название базы данных, резервную копию которой вы пытаетесь сделать, необходимо поменять на то, которое подходит для вашего случая.
user
- имя пользователя под которым вы пытаетесь сделать резервную копию, необходимо поменять на то, которое подходит для вашего случая.
3) Отключаемся
exit;
Добавить комментарий