Este é um banco de dados virtual, então você precisará adicionar a opção --skip-events
para fazer funcionar.
Ao tentar fazer backup de todos os bancos de dados MySQL com mysqldump, recebo o seguinte erro:
Couldn't execute 'show events': Access denied for user 'user'@'localhost' to database 'performance_schema'
Este é um banco de dados virtual, então você precisará adicionar a opção --skip-events
para fazer funcionar.
'performance_schema' é um banco de dados virtual para que você não precise fazer backup dele | (consulte o link )
para pular em seu script de backup, use-o da seguinte forma:
#!/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 {} \;
As outras duas respostas funcionarão , mas suas justificativas e explicações estão erradas.
O erro que você está recebendo é não devido a o banco de dados ser virtual, mas devido a um erro com a consulta show events
:
SHOW EVENTS
in the performance_schema database returned an access-denied error, rather than an empty result
O bug foi corrigido no servidor MySQL 5.7.6. Basta atualizar seu servidor e você não verá mais esse erro.
Nesse meio tempo, se você estiver preso a versões mais antigas do servidor MySQL, evite chamar show events
usando as soluções fornecidas nas outras duas respostas.
Se você encontrou esse erro com um banco de dados comum, precisa conceder ao seu usuário o Permissão de EVENTO .
Tags mysql