How do I create a read only MySQL user for backup purposes with mysqldump?
Those permissions should be all that's needed for the mysqldump.
Since you've granted LOCK TABLES, and it's erroring on LOCK TABLES, seems like the permissions are inconsistent. Have you run a FLUSH PRIVILEGES
?