Не могу сказать точно, но если вы используете одинарные кавычки, переменные php не будут заменены реальными значениями. Вы должны использовать двойные кавычки вместо одинарных кавычек.
Как $ command = "mysqldump -u $ dbuser -h localhost -p $ пароль $ dbname> dump.sql";
Попробуйте напечатать команду перед выполнением, чтобы убедиться, что значения заменены переменными.
Дайте мне знать, если это не сработает, даст вам возможность отладить более точно.
Попробуйте с приведенным ниже, и дайте мне знать результат.
$command = "mysqldump -u $dbuser -h localhost -p$password $dbname > dump.sql 2>&1";
exec($command, $output);
echo '<pre>';print_r($output);exit;