Я должен не согласиться с ответом Андрея выше.
В ряде компаний с общим хостингом работает:
$command = 'mysqldump --opt --host='.$host.' --user='.$mysql_username.' --password=\''.$mysql_password.'\' '.$dbname.' > \''.$filename.'\'';
exec($command);
Осторожно, если в ваших аргументах (именах файлов, паролях и т. Д.) Есть пробелы, которые вы используете в кавычках. В PHP вам может понадобиться использовать обратную косую черту, как я делал выше, при цитировании. Предшествующий или конечный пробел обычно плохая идея, но я столкнулся с клиентом, где это оказалось причиной пустого 0-байтового файла mysqldump. Цитирование решило проблему. Вам также может потребоваться оболочка экранировать аргументы.
Следующие две строки совершенно разные:
-password='password ' db_name > 'my file.sql'
-password=password db_name > my file.sql
Обратите внимание, что у второго также есть два пробела в конце пароля, но даже HTML может его игнорировать.
Я, наверное, должен упомянуть о нубах ... убедитесь, что вы можете вручную подключиться к настройкам, прежде чем искать причины, по которым он не работает, например,
- убедитесь, что хост правильный, например, localhost или yourdb.website.com
- убедитесь, что имя пользователя и пароль работают