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.