Предположим, ваш пароль содержит символ, который завершает команду оболочки, например ;
&
|
&&
||
Или символ, заканчивающий аргумент командной строки, например, пробел.
Или некоторые другие специальные символы, такие как кавычки любого типа, или $
или !
.
Без кавычек пароля, скорее всего, будет срезана команда.
Я предлагаю поместить ваше имя пользователя и пароль в файл опций, а затем сослаться на этот файл опций с помощью --defaults-file=...
$command = "mysqldump --defaults-file=mysql-dump.cfg {$database} > {$date}.sql";
mysql-dump.cfg должен содержать что-то вроде:
[client]
user = <your user>
password = <your password>
Было бы также неплохо избегать размещения вашего пароля в открытом виде от тех, кто может запустить ps
.