diff --git a/sql/archiver.py b/sql/archiver.py index 4636b0f8f1..063aed1eaf 100644 --- a/sql/archiver.py +++ b/sql/archiver.py @@ -275,7 +275,7 @@ def archive(archive_id): pt_archiver = PtArchiver() # 准备参数 - source = fr"h={s_ins.host},u={s_ins.user},p={s_ins.password}," \ + source = fr"h={s_ins.host},u={s_ins.user},p='{s_ins.password}'," \ fr"P={s_ins.port},D={src_db_name},t={src_table_name},A={s_charset}" args = { "no-version-check": True, diff --git a/sql/binlog.py b/sql/binlog.py index a2af1a32df..c9c13f743b 100644 --- a/sql/binlog.py +++ b/sql/binlog.py @@ -117,8 +117,9 @@ def binlog2sql(request): # 提交给binlog2sql进行解析 binlog2sql = Binlog2Sql() # 准备参数 + instance_password = shlex.quote(f'"{str(instance.password)}"') args = {"conn_options": fr"-h{shlex.quote(str(instance.host))} -u{shlex.quote(str(instance.user))} \ - -p'{shlex.quote(str(instance.password))}' -P{shlex.quote(str(instance.port))} ", + -p'{instance_password}' -P{shlex.quote(str(instance.port))} ", "stop_never": False, "no-primary-key": no_pk, "flashback": flashback, @@ -196,8 +197,9 @@ def binlog2sql_file(args, user): """ binlog2sql = Binlog2Sql() instance = args.get('instance') + instance_password = shlex.quote(f'"{str(instance.password)}"') conn_options = fr"-h{shlex.quote(str(instance.host))} -u{shlex.quote(str(instance.user))} \ - -p'{shlex.quote(str(instance.password))}' -P{shlex.quote(str(instance.port))}" + -p'{instance_password}' -P{shlex.quote(str(instance.port))}" args['conn_options'] = conn_options timestamp = int(time.time()) path = os.path.join(settings.BASE_DIR, 'downloads/binlog2sql/') @@ -252,8 +254,9 @@ def my2sql(request): my2sql = My2SQL() # 准备参数 + instance_password = shlex.quote(f'"{str(instance.password)}"') args = {"conn_options": fr"-host {shlex.quote(str(instance.host))} -user {shlex.quote(str(instance.user))} \ - -password '{shlex.quote(str(instance.password))}' -port {shlex.quote(str(instance.port))} ", + -password '{instance_password}' -port {shlex.quote(str(instance.port))} ", "work-type": work_type, "start-file": start_file, "start-pos": start_pos, @@ -336,8 +339,9 @@ def my2sql_file(args, user): """ my2sql = My2SQL() instance = args.get('instance') + instance_password = shlex.quote(f'"{str(instance.password)}"') conn_options = fr"-host {shlex.quote(str(instance.host))} -user {shlex.quote(str(instance.user))} \ - -password '{shlex.quote(str(instance.password))}' -port {shlex.quote(str(instance.port))} " + -password '{instance_password}' -port {shlex.quote(str(instance.port))} " args['conn_options'] = conn_options path = os.path.join(settings.BASE_DIR, 'downloads/my2sql/') os.makedirs(path, exist_ok=True) diff --git a/sql/instance.py b/sql/instance.py index 22517fc57d..6b75676e0a 100644 --- a/sql/instance.py +++ b/sql/instance.py @@ -209,12 +209,12 @@ def schemasync(request): "sync-comments": sync_comments, "tag": tag, "output-directory": output_directory, - "source": r"mysql://{user}:'{pwd}'@{host}:{port}/{database}".format(user=shlex.quote(str(instance_info.user)), + "source": r"mysql://{user}:{pwd}@{host}:{port}/{database}".format(user=shlex.quote(str(instance_info.user)), pwd=shlex.quote(str(instance_info.password)), host=shlex.quote(str(instance_info.host)), port=shlex.quote(str(instance_info.port)), database=db_name), - "target": r"mysql://{user}:'{pwd}'@{host}:{port}/{database}".format(user=shlex.quote(str(target_instance_info.user)), + "target": r"mysql://{user}:{pwd}@{host}:{port}/{database}".format(user=shlex.quote(str(target_instance_info.user)), pwd=shlex.quote(str(target_instance_info.password)), host=shlex.quote(str(target_instance_info.host)), port=shlex.quote(str(target_instance_info.port)), diff --git a/sql/sql_optimize.py b/sql/sql_optimize.py index dfda0b392e..c3cd89404e 100644 --- a/sql/sql_optimize.py +++ b/sql/sql_optimize.py @@ -108,7 +108,7 @@ def optimize_soar(request): return HttpResponse(json.dumps(result), content_type='application/json') # 目标实例的连接信息 - online_dsn = "{user}:{pwd}@{host}:{port}/{db}".format(user=instance_info.user, + online_dsn = '{user}:"{pwd}"@{host}:{port}/{db}'.format(user=instance_info.user, pwd=instance_info.password, host=instance_info.host, port=instance_info.port,