I always have to look up which permissions a user needs to just run mysqldump successfully. This creates a new backup user, without a password, and gives them the least amount of privilege necessary.
CREATE USER 'backup'@ 'localhost';
GRANT SHOW DATABASES, SELECT, LOCK TABLES, RELOAD ON *.* to backup@localhost;
Date: 6th January 2009.
Reading time: Less than 1 minute.