如果密码有“(”或“)”或“&”,phpmysql转储不起作用
phpmysql dump not working if password has "(" or ")" or "&"
我正在尝试进行 mysql 转储,但当数据库密码中包含“(”或“)”或“&”时出现问题。可能还有更多,但到目前为止我已经用这些字符进行了测试。
我的脚本是:
$un = "user_name_here";
$pass = "gTbK5AQ)iuT";
$hn = "localhost";
$dbn = "database_name_here";
$exp = "export_path_here";
$output = array();
exec("mysqldump --user=$un --password=$pass --host=$hn $dbn > $exp", $output, $worked);
如果 $pass 中有“)”,脚本将无法运行。当我从密码中删除“)”时,转储工作正常,并根据需要以 sql 格式导出数据库。
是我做错了还是密码不应该有这些字符?
如果您的密码包含可被您的 shell 误解为控制序列的字符,那么您需要将值用引号引起来以确保它们被视为文字
exec("mysqldump --user=$un --password=\"$pass\" --host=$hn $dbn > $exp", $output, $worked);
请注意,如果您的密码包含文字引号,那么您也需要对它们进行转义
我正在尝试进行 mysql 转储,但当数据库密码中包含“(”或“)”或“&”时出现问题。可能还有更多,但到目前为止我已经用这些字符进行了测试。 我的脚本是:
$un = "user_name_here";
$pass = "gTbK5AQ)iuT";
$hn = "localhost";
$dbn = "database_name_here";
$exp = "export_path_here";
$output = array();
exec("mysqldump --user=$un --password=$pass --host=$hn $dbn > $exp", $output, $worked);
如果 $pass 中有“)”,脚本将无法运行。当我从密码中删除“)”时,转储工作正常,并根据需要以 sql 格式导出数据库。 是我做错了还是密码不应该有这些字符?
如果您的密码包含可被您的 shell 误解为控制序列的字符,那么您需要将值用引号引起来以确保它们被视为文字
exec("mysqldump --user=$un --password=\"$pass\" --host=$hn $dbn > $exp", $output, $worked);
请注意,如果您的密码包含文字引号,那么您也需要对它们进行转义