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.