- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章MySQL连接控制插件介绍由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
MySQL 服务端包含一个插件库,可以自定义安装各类插件。connection_control 插件也是其中一种,主要用来控制客户端在登录操作连续失败一定次数后的响应的延迟。该插件可有效的防止客户端暴力登录的风险。该插件包含以下两个组件:
information_schema
系统库中。连接控制插件文件的基本名称为 connection_control 。每个平台的文件名后缀有所不同(对于 Unix 和类 Unix 系统为 .so ,对于 Windows 为 .dll )。下面以 Linux 系统为例来安装下 connection_control 插件,Windows 系统只需要将 .so 改成 .dll 即可.
1
2
3
4
5
|
mysql> INSTALL PLUGIN CONNECTION_CONTROL SONAME
'connection_control.so'
;
Query OK, 0
rows
affected (0.04 sec)
mysql> INSTALL PLUGIN CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS SONAME
'connection_control.so'
;
Query OK, 0
rows
affected (0.01 sec)
|
1
2
3
4
5
6
7
8
9
10
11
12
|
mysql>
SELECT
-> PLUGIN_NAME,PLUGIN_STATUS
->
FROM
-> INFORMATION_SCHEMA.PLUGINS
->
WHERE
-> PLUGIN_NAME
LIKE
'connection%'
;
+
------------------------------------------+---------------+
| PLUGIN_NAME | PLUGIN_STATUS |
+
------------------------------------------+---------------+
| CONNECTION_CONTROL | ACTIVE |
| CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS | ACTIVE |
+
------------------------------------------+---------------+
|
1
2
3
4
5
6
7
8
|
mysql> show variables
like
'connection_control%'
;
+
-------------------------------------------------+------------+
| Variable_name | Value |
+
-------------------------------------------------+------------+
| connection_control_failed_connections_threshold | 3 |
| connection_control_max_connection_delay | 2147483647 |
| connection_control_min_connection_delay | 1000 |
+
-------------------------------------------------+------------+
|
可以看出,插件安装还是很简单的,不过这个插件具体有什么作用呢?我们先来解释下相关系统变量:
connection_control_failed_connections_threshold
:允许帐户进行的连续失败尝试的次数。默认为 3 ,表示当连接失败 3 次后启用连接控制,0 表示不开启。connection_control_max_connection_delay
:超出阈值的连接失败的最大延迟(以毫秒为单位),默认 2147483647 毫秒,约 25 天。connection_control_min_connection_delay
:超过阈值的连接失败的最小延迟(以毫秒为单位),默认 1000 毫秒,即 1 秒。至此,你可能明白了 connection_control 插件的作用,那就是当客户端连接数据库连续失败到达一定次数后,服务端会进行一段时间的响应延迟,连续失败尝试的次数越多,响应延迟时间越长.
我们来具体做下实验,为了实验效果,这里将失败次数阈值设为 10 ,延迟最小时间设为 1 分钟,即当连续连接失败十次后,延迟响应时间最低为 1 分钟,下面我们故意输错密码来试试看:
1
2
3
4
5
6
7
8
9
|
mysql> show variables
like
'connection_control%'
;
+
-------------------------------------------------+------------+
| Variable_name | Value |
+
-------------------------------------------------+------------+
| connection_control_failed_connections_threshold | 10 |
| connection_control_max_connection_delay | 2147483647 |
| connection_control_min_connection_delay | 60000 |
+
-------------------------------------------------+------------+
3
rows
in
set
(0.01 sec)
|
1
2
|
mysql>
SELECT
*
FROM
information_schema.CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS;
Empty
set
(0.00 sec)
|
1
2
3
|
[root@localhost ~]# mysql -utestuser -p123
mysql: [Warning] Using a
password
on
the command line interface can be insecure.
ERROR 1045 (28000): Access denied
for
user
'testuser'
@
'localhost'
(using
password
: YES)
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
mysql>
SELECT
*
FROM
information_schema.CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS;
+
----------------+-----------------+
| USERHOST | FAILED_ATTEMPTS |
+
----------------+-----------------+
|
'testuser'
@
'%'
| 1 |
+
----------------+-----------------+
1 row
in
set
(0.00 sec)
# 当连续失败次数超过阈值后 再次进行连接会产生延迟 即延迟一定时间后才会返回密码是否正确
mysql>
SELECT
*
FROM
information_schema.CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS;
+
----------------+-----------------+
| USERHOST | FAILED_ATTEMPTS |
+
----------------+-----------------+
|
'testuser'
@
'%'
| 10 |
+
----------------+-----------------+
mysql> show processlist;
+
---------+----------+--------------------+--------------------+---------+-------+--------------------------------------+------------------+
| Id |
User
| Host | db | Command |
Time
| State | Info |
+
---------+----------+--------------------+--------------------+---------+-------+--------------------------------------+------------------+
| 1817003 | root | localhost |
NULL
| Query | 0 | starting | show processlist |
| 1817091 | testuser | localhost |
NULL
|
Connect
| 16 | Waiting
in
connection_control plugin |
NULL
|
+
---------+----------+--------------------+--------------------+---------+-------+--------------------------------------+------------------+
|
正常情况下,输错密码是即刻返回错误的,当连续失败次数达到阈值后,再次进行连接尝试,则会延迟响应,具体表现就是一直卡着,到延迟结束后才返回错误。information_schema 系统库中的表会记录登录失败的用户名及失败次数,当延迟发生时,从 processlist 中也可以查到正在延迟的连接。若输入密码正确,则会取消延迟、重新计数.
于是乎,你应该理解了为什么此插件能防止客户端暴力破解,假设暴力破解每分钟尝试 120 次,现在启用该插件后,连续失败一定次数后就会响应延迟,并且随着失败次数的增加延迟时间也会增加,原来能立即开始下次破解,现在只能到延迟时间后才能发起下次尝试,所以能极大降低被暴力破解的风险.
不过启用连接控制插件后要注意是否存在延迟的连接,因为正在延迟的连接也是占用连接数的,可能会引起连接积压导致连接数不够用。所以当出现延迟的连接时,应尽快排查到底是那里在连接,确保密码输入正确.
若要启用此插件,注意要配置合适的阈值及延迟时间,并记得将这些参数写入配置文件。一般等保评测可能会有这项要求,这个时候连接控制插件会用得上.
到此这篇关于MySQL连接控制插件介绍的文章就介绍到这了,更多相关MySQL连接控制插件内容请搜索我以前的文章或继续浏览下面的相关文章希望大家以后多多支持我! 。
原文链接:https://segmentfault.com/a/1190000040681606 。
最后此篇关于MySQL连接控制插件介绍的文章就讲到这里了,如果你想了解更多关于MySQL连接控制插件介绍的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我在互联网上搜索了很多小时,但没有找到满意的结果,所以 -VSTO Addin 和 COM Addin(我们作为类库项目制作并使用 Excel 对象)之间有什么区别?VSTO 项目是否有任何限制,例如
我在互联网上搜索了很多小时,但没有找到满意的结果,所以 -VSTO Addin 和 COM Addin(我们作为类库项目制作并使用 Excel 对象)之间有什么区别?VSTO 项目是否有任何限制,例如
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,
我正在寻找有关如何构建可扩展 WCF 服务器(具有动态加载的服务)的建议,最好使用 System.Addins 或 MEF。 服务器应托管实现最小“插件”API(StartService/StopSe
有没有一种方法可以使用加载浏览器扩展/插件/插件的 headless 浏览器(即 PhantomJS、Selenium)来运行自动测试? 更具体地说,我想模拟广告拦截器(如 Ghostery、ad-b
我是 gradle 的新手,我使用 artifactory 作为我的 repo 服务器。我在网上查看了如何将我的项目发布到我的 repo 服务器,发现我可以使用 maven-publish 或使用 a
我想禁用某些状态的点击/事件,并仅使少数状态可点击。我通读了http://newsignature.github.io/us-map/处的文档,并且找不到与此问题相关的任何内容。 最佳答案 http:
据我了解,在Intellij中使用idea插件打开Maven构建的项目并不是最好的方法,即调用: mvn idea:idea 但是直接打开pom文件(Intellij有默认的Maven插件);同样的事
使用Artifactory plugin对于 Jenkins pipeline 来说是一种幸福,只要遵循文档就可以了。但后来我介绍了Maven Flatten plugin解析父模块和子模块 mvn
我已经安装了Elasticsearch版本1.7.1。一切正常。我也安装了 JDBC 驱动程序。检查下面我的插件文件夹 目录E:\Xampp\htdocs\my-elastic\elasticsear
在我使用 webpack common chunks 插件创建包含第三方库(如 angular、react、lodash 等)的 vendor 包之前,但后来我知道了 webpack dll
我们正在尝试使用(Jenkins、sonar、eclipse ...)安装 CI 平台。 为了让每个开发人员都可以在提交之前对他的代码进行分析,我想知道两种选择: 使用 Sonar 插件运行本地分析。
我知道这是一个比较特殊的问题。尽管如此,也许有些人知道这一点: 我想在 Eclipse 中使用 Maven 编译 Hector=> 分支:0.7.0 和标签:hector-0.7.0-29(https
我卡住了。我一直在尝试寻找或自己创建一个简单的准系统示例,说明如何为 VS 2010 Express 创建 Outlook 插件。我知道这在 VS 2010 Pro 中更简单,但是,在快速版本中真的不
我有以下排除过滤器来忽略所有 R 文件类: findbugs-exclude-filter.xml 当我将它用于 FindBugs-IDEA 插件时,它可以
我刚开始玩 CakePHP,我发现了 Wildflower CMS .我喜欢这个想法,并打算开始修补它。不过,我有一个问题。 在自述文件中,我发现了以下内容:“Wildflower 不是也不会是 Ca
虽然现在大部分情况都是使用n-api来编写插件,但是底层毕竟是v8(和libuv),使用v8编写简单的插件,同时熟悉v8的使用。 本文介绍在写c++插件时,简单又常用的写法,其实本质上,写插件
本篇是 Python 系列教程第 3 篇,更多内容敬请访问我的 Python 合集 Visual Studio Code的安装非常简单,就不放这里增加文章篇幅了。 相比PyCharm,V
Maven – 插件 什么是 Maven 插件? Maven 实际上是一个依赖插件执行的框架,每个任务实际上是由插件完成。Maven 插件通常被用来: 创建 jar 文件 创建 war
我正在编写一个插件来添加带有标签 [deposit_page] 的页面;该标记应替换为一些 PHP 代码。 这就是我所拥有的,但它不起作用。有什么我遗漏或做错了什么吗? function deposi
我是一名优秀的程序员,十分优秀!