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.