首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在MYSQL中手动拦截和解封特定的IP/主机名

问如何在MYSQL中手动拦截和解封特定的IP/主机名
EN

Stack Overflow用户
提问于 2013-07-13 02:31:54
回答 3查看 14.3K关注 0票数 2

首先,我用谷歌搜索了这个,但网站上充斥着关于如何处理“主机名被屏蔽”问题的建议。(https://www.google.com/search?q=mysql+block+a+host)。我的问题与此正好相反。

对于我来说,我运行的是一个MySQL数据库,不涉及任何PHP。

我需要阻止某个主机名/IP地址连接到我的数据库,然后我将取消阻止它。我希望有两个简单的查询,我可以在MySQL数据库上执行,我似乎在任何地方都找不到它。

通过运行show processlist查询,我可以很容易地找到主机名,并且我知道我可以一次杀死一个进程,但是出现了如此多的新线程,如果我可以从某个主机名阻止所有这些线程,那将是最理想的。然后,一旦我修复了一些东西,我就会解除阻塞。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-07-13 02:43:45

您可以使用GRANT为从特定主机连接的用户提供非特权条目,即使您对包括该主机在内的通配符具有GRANTed权限。在进行身份验证时,最具体的主机匹配优先。

例如,假设您允许用户从本地子网上的一系列主机进行连接:

代码语言:javascript
复制
mysql> GRANT ALL PRIVILEGES ON *.* TO 'user'@'192.168.56.%' IDENTIFIED BY 'xyzzy';

然后,您可以为该子网中的一个特定主机授予最小USAGE privilege,这是该用户的“无权限”的同义词:

代码语言:javascript
复制
mysql> GRANT USAGE ON *.* TO 'user'@'192.168.56.110';

随后尝试从该主机进行连接时会出现以下错误:

代码语言:javascript
复制
$ mysql -uuser -pxyzzy
ERROR 1045 (28000): Access denied for user 'user'@'192.168.56.110' (using password: YES)

出现错误的原因是我为没有密码的用户执行了此授权。如果我尝试提交密码,这与特权表中的条目不匹配。

即使用户尝试在不使用密码的情况下连接,他也发现自己无法访问任何内容。

代码语言:javascript
复制
$ mysql -uuser 
mysql> USE mydatabase;
ERROR 1044 (42000): Access denied for user 'user'@'192.168.56.110' to database 'mydatabase'

您可以撤消阻止:

代码语言:javascript
复制
mysql> DELETE FROM mysql.user WHERE host='192.168.56.110' AND user='user';
mysql> FLUSH PRIVILEGES; 

然后,IP范围将重新生效,用户将能够再次从该主机连接。

票数 2
EN

Stack Overflow用户

发布于 2013-07-13 03:05:49

您可以如上所述撤销权限,但这仍将允许用户连接到您的MySQL服务器-尽管这将阻止该用户进行身份验证。如果您确实想阻止/允许基于IP的MySQL服务器连接,请使用iptables。

票数 4
EN

Stack Overflow用户

发布于 2013-07-13 02:39:59

你试过使用MySQL Workbench吗?

您只需从此处删除特定用户/主机的角色。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17621710

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档