如何终止与MySQL数据库的某些连接

Posted www.syncnavigator.cn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何终止与MySQL数据库的某些连接相关的知识,希望对你有一定的参考价值。

技术图片

  SyncNavigator是一款功能强大的数据库同步软件,适用于SQL SERVER, mysql,具有自动/定时同步数据、无人值守、故障自动恢复、同构/异构数据库同步、断点续传和增量同步等功能,支持Windows xp以上所有操作系统,适用于大容量数据库快速同步。

安装包下载地址:https://www.syncnavigator.cn/Setup.zip

帮助文档地址:https://www.syncnavigator.cn/Help_zh-CN.chm

Web文档地址:https://www.syncnavigator.cn/chm/index.htm

技术图片

技术图片


创建第一个同步项目


使用 HKROnline SyncNavigator 创建一个数据库同步项目。只需要通过简单的配置,创建完成后您可以随时执行数据库同步任务。

1.点击 “SyncNavigator(Client)” 图标进入系统。

2.在登录界面中输入连接到的服务器地址,点击 “确定” 按钮开始连接。

  • 注意:这里不是登陆您的数据库,而是登陆到本软件的管理端。
  • 默认情况下直接点击 “连接” 按钮即可(本机默认已经安装)。
  • 默认服务器登录用户名为 “admin” 密码为空。
  • 本机服务器地址 = 127.0.0.1 。
  • 您可以使用域名或者IP地址作为服务器地址。如果指定了端口号可以使用 IP:Port 方式填写。

    数据库或服务器的维护通常由数据库管理员在夜间执行。但是这些例程有时会被长时间运行的查询或挂在锁上的应用程序阻塞得比预期更长的时间而阻塞。

    通常,应优先考虑应用程序,并且通常会取消维护例程,以免干扰应用程序。但是有时候会发生这种情况,您需要终止耗时且尚未在一定时间内完成的MySQL查询。在这种情况下,您可能需要一种快速的方法来终止所涉及的连接。

    在本文中,我们旨在考虑两种解决上述问题的方法。为此,我们将使用dbForge Studio for MySQL

    方法1.根据使用事件的用户登录终止MySQL连接

    第一种方法包括创建一个特殊的MySQL事件。创建事件时,将创建一个包含一个或多个SQL语句的命名数据库对象,该SQL语句将在一个特定的日期和时间开始和结束,并以一个或多个规则的时间间隔执行。

    使用下面的脚本来创建数据库上的一个事件:
    [代码LANG =” SQL”] DELIMITER $
    CREATE EVENT kill_process_event
    ON计划的每个’1′ DAY
    STARTS ‘2019年3月20日8时四十五分30秒’
    DO
    BEGIN
    DECLARE kill_done INT ;
    未找到的DECLARE退出处理程序SET kill_done = 1;
    开始声明
    DECLARE cursor_ID int;
    DECLARE cursor_i CURSOR FOR
    SELECT
    ID
    FROM information_schema.PROCESSLIST
    其中User LIKE ‘%测试’
    和id = CONNECTION_ID()!;
    OPEN cursor_i;
    read_loop:
    LOOP
    FETCH cursor_i INTO cursor_ID;
    杀死连接cursor_ID;
    如果kill_done然后
    离开read_loop;
    万一;
    结束循环;
    CLOSE cursor_i;
    结束;

    $

    ALTER EVENT kill_process_event
    启用
    $

    DELIMITER; [/ code]
    后续步骤

    •将您自己的值分配给所需的参数。即时间表,时间和用户登录。
    •安排事件
    •设置服务器变量event_scheduler = ON

    如何安排事件
    要安排事件,请在对象资源管理器中右键单击它,然后从弹出窗口中选择“ 编辑事件 ”。在打开的向导中,您可以为事件配置开始和结束日期,重复发生以及其他相关选项。

    技术图片

    在我们的示例中,我们想终止sakila数据库上test%用户的连接。下图显示了在执行方法1中描述的操作之前MySQL查询SHOW FULL PROCESSLIST的输出。

    技术图片

    执行上述脚本后,所有具有用户登录名(’test%’)的连接都将被杀死。

    技术图片

    该方法的缺点在于,当改变选择会话ID的条件时,有必要改变对象(事件)。

    或者,您可以创建一个存储过程和一个事件来调用此过程。

    使用调用存储过程的事件基于用户登录终止MySQL连接

    基本上,此方法是进行中方法的扩展。它涉及创建MySQL过程,然后安排事件以调用此过程。

    1. 首先,您需要在数据库上创建一个存储过程:

    [code lang =“ SQL”] DELIMITER $
    CREATE PROCEDURE kill_process_proc()
    BEGIN
    DECLARE kill_done int;
    未找到的DECLARE退出处理程序SET kill_done = 1;
    开始声明
    DECLARE cursor_ID int;
    DECLARE cursor_i CURSOR FOR
    SELECT
    ID
    FROM information_schema.PROCESSLIST
    其中User LIKE ‘%测试’
    和id = CONNECTION_ID()!;
    OPEN cursor_i;
    read_loop:
    LOOP
    FETCH cursor_i INTO cursor_ID;
    杀死连接cursor_ID;
    如果kill_done然后
    离开read_loop;
    万一;
    结束循环;
    CLOSE cursor_i;
    结束;
    END $
    DELIMITER; [/代码]

    您需要将所需的值分配给USER参数。在我们的示例中,它是“ test%”。

    2.接下来,准备好过程,您可以创建一个事件来调用它并按计划执行它。请考虑下面的脚本:
    [代码LANG =” SQL”] CREATE DEFINER = ‘根’ @ ‘localhost’的
    事件sakila.kill_process_event
    ON计划的每个’1’ DAY
    STARTS ‘2019年3月19日14:53:00’
    DO
    开始
    呼叫kill_process_proc();
    结束;

    ALTER EVENT sakila.kill_process_event
    ENABLE; [/ code]

    3.后续步骤

    •将您自己的值分配给所需的参数。即时间表,时间,数据库和用户登录。
    •安排事件
    •设置服务器变量event_scheduler = ON

    执行上述步骤后,所有具有用户登录名(’test%’)的连接都将被杀死。

    方法2.创建一个bat文件以启动MySQL客户端和一个带有参数的过程

    您还可以通过命令行界面创建可执行的BAT文件来启动MySQL客户端和带有参数的过程。
    首先,您需要创建一个带有参数的过程。为此,请使用以下脚本:

    [code lang =“ SQL”] DELIMITER $
    CREATE PROCEDURE kill_process_param(IN user VARCHAR(255))
    BEGIN
    DECLARE kill_done int;
    未找到的DECLARE退出处理程序SET kill_done = 1;
    开始声明
    DECLARE cursor_ID int; 从information_schema.PROCESSLIST中 选择SELECT ID的
    cursor_i游标,在该列表中, 用户喜欢的用户 和ID!= CONNECTION_ID(); OPEN cursor_i; read_loop: LOOP FETCH cursor_i INTO cursor_ID; 杀死连接cursor_ID; 如果kill_done然后 离开read_loop; 万一; 结束循环; CLOSE cursor_i; 结束; END $ DELIMITER; [/代码]

    相应的过程将出现在数据库中。让我们借助dbForge Studio for MySQL对其进行研究

    技术图片

    接下来,您需要创建一个BAT文件。

    要创建BAT文件,请执行以下操作:
    1.打开纯文本编辑器,例如记事本。
    2.输入以下代码:

     C Program Files  MySQL  MySQL Server 8.0  bin  mysql.exe --user = <用户> --password = <密码> --host = <host> --port = <端口>-数据库= <数据库名称> --execute =“调用kill_process_param‘%1‘)”

    3.为用户,密码,主机,端口和数据库名称参数分配自己的值。

    4.保存扩展名为.bat的文件。

    现在,您需要使用参数运行bat文件。

    技术图片

    结果,所有具有用户登录名(’test%’)的连接都将被杀死。

    结论

    知道如何在MySQL Server中终止进程可能是工具箱中的便捷工具。但是,我们建议您谨慎使用给定的方法。

以上是关于如何终止与MySQL数据库的某些连接的主要内容,如果未能解决你的问题,请参考以下文章

如何从客户端终止 php 连接?

片段中的 Asynctask 未到达 onPostExecute

如何使用自定义连接器正确终止 Django 中的 MySQL/MariaDB 连接

TCP连接的建立与终止

部分代码片段

如何在 WinForm 终止时打开数据库连接?