Назад | Перейти на главную страницу

Не удалось выполнить "показать события" на mysqldump

При попытке сделать резервную копию всех баз данных MySQL с помощью mysqldump я получаю следующую ошибку:

Couldn't execute 'show events': Access denied for user 'user'@'localhost' to database 'performance_schema'

Это виртуальная база данных, поэтому вам нужно будет добавить опцию --skip-events чтобы заставить его работать.

Два других ответа будут работай, но их логика и объяснение неверны.

Вы получаете ошибку не из-за база данных виртуальная, но из-за ошибки с запросом show events:

SHOW EVENTS в базе данных performance_schema вернул ошибку отказа в доступе, а не пустой результат

Ошибка исправлена ​​в сервере MySQL 5.7.6. Просто обновите свой сервер, и вы больше не увидите эту ошибку.

А пока, если вы застряли на старых версиях сервера MySQL, не звоните show events используя решения, представленные в двух других ответах.

'performance_schema' - это виртуальная база данных, поэтому вам не нужно ее резервировать
(видеть http://dev.mysql.com/doc/refman/5.5/en/performance-schema.html )

чтобы пропустить его в сценарии резервного копирования, используйте его так:

#!/bin/sh
BAK=/var/backups/mysql/
DATE=$(date +%Y-%m-%d)
MYSQLPATH=/var/lib/mysql/
for i in /var/lib/mysql/*/; do
    if [ $i != "$MYSQLPATH"'performance_schema/' ] ; then 
        dbname=`basename "$i"` 
        mysqldump -u root "$dbname" | gzip > $BAK/"$dbname"-$DATE.sql.gz
    fi
done

# optionally delete old backups of databases that don't exist anymore
# find $BACKUP_DIR -atime +30 -exec rm {} \;

Если вы столкнулись с этой ошибкой в ​​обычной базе данных, вам необходимо предоставить своему пользователю СОБЫТИЕ разрешение.

GRANT EVENT ON `database`.* TO 'user'@'localhost';