面板版本:宝塔linux面板 7.9.2
系统版本:CentOS Linux release 7.9.2009 (Core)
问题现象:备份代码未考虑密码本身具有特殊字符时的情况,导致备份失败。
重现方式:mysql8.0 数据库密码为类似【b66v4_vX+b-,X&aDvb12)(sPre,&a*】,因含有特殊字符,而代码拼接出的 mysqldump 命令中 -p 参数内容没有用引号引起来会导致命令执行错误从而备份失败,由于未产生备份文件,后面会报 FileNotFoundError 错误,整个备份工作失败。
在/www/server/panel/class/panelBackup.py 559 行开始下面的几行
导致
经试验,上述代码拼接命令处改为下面所示后,备份成功:
- backup_cmd = mysqldump_bin + " -h " + conn_config['db_host'] + " -P " + str(conn_config['db_port']) + " -E -R --default-character-set="+ character +" --force --hex-blob --opt " + db_name + " -u " + str(conn_config['db_user']) + " -p'"+str(conn_config['db_password'])+"' 2>"+self._err_log+"| gzip > " + dfile
复制代码
|
|