Я не уверен, что это проблема, но похоже, что ваш параметр передачи пароля неверен.
Если вы используете -p, у вас должен быть пароль рядом с ним, без пробелов, например:
$command = "mysqldump --opt -h $dbhost -u $dbuser -p$dbpass $dbname | gzip > $backupFile";
Или используйте длинный --password = $ dbpass.
Например:
$command = "mysqldump --opt -h $dbhost -u $dbuser --password=$dbpass $dbname | gzip > $backupFile";
Со страницы руководства mysqldump:
- пароль [= пароль], -p [пароль]
Пароль, используемый при подключении к серверу. Если вы используете краткую форму опции (-p), между ней и паролем не должно быть пробела. Если вы пропустите значение пароля после параметра --password или -p в командной строке, вам будет предложено ввести его.