Friend of mine was needing to move an entire mysql installation over to a new machine. Did the expected 'mysqldump -p --all-databases >all_databases.sql', moved the file over to the new machine and reloaded it.
All the data was there, but user permissions weren't.
Apparently the 'mysql' table where those user accounts and permissions are stored is not included in '--all-databases' by default. Guess I can see that, but...
Anyway, did a 'mysqldump -p mysql >mysql.sql' and moved it over, restarted mysql (doesn't read this table unless you restart) and all was well.