Create a MySQL User for Backups
The following SQL will create a MySQL user with the minimum number of privileges necessary to backup databases:
CREATE USER 'backup'@'localhost' IDENTIFIED BY '#PASSWORD#';
GRANT SELECT, RELOAD, FILE, SUPER, LOCK TABLES,
SHOW VIEW ON *.* TO 'backup'@'localhost'
IDENTIFIED BY '#PASSWORD#'
WITH MAX_QUERIES_PER_HOUR 0
MAX_CONNECTIONS_PER_HOUR 0
MAX_UPDATES_PER_HOUR 0
MAX_USER_CONNECTIONS 0;
If you're looking for a user to restore you'll want these privileges:
CREATE, DROP, INDEX, SHUTDOWN, INSERT, ALTER, SUPER, REPLICATION CLIENT, CREATE, VIEW
Check out "Backing up All Databases without Warnings" for the steps on performing a backup.