插件窝 干货文章 MySQL设置白名单限制的实现

MySQL设置白名单限制的实现

MySQL 地址 用户 class 770    来源:    2024-10-28

白名单(Whitelist)是一种机制,用于限制哪些主机可以连接到服务器,而阻止其他主机的访问。通过配置白名单,可以增加服务器的安全性,防止未授权的访问。

在MySQL数据库中直接设置白名单访问(即限制只有特定IP地址或IP地址范围能够访问数据库)并不是MySQL服务器本身直接提供的功能。

MySQL主要关注于数据的存储、检索和管理,而网络层面的访问控制通常由操作系统、防火墙规则或中间件(如数据库代理、负载均衡器等)来管理。

在网络安全领域中,白名单常被认为是一种安全性较高的访问控制策略,因为它仅允许明确列出的主机进行访问,从而减少了潜在的安全漏洞。

在MySQL数据库中,通常修改 MySQL的配置文件或者授权用户访问权限来限制哪些主机可以连接到MySQL服务器,而阻止其他主机的访问。可以理解为MySQL数据库的白名单(Whitelist)机制。

一、修改配置文件

MySQL配置文件 my.ini中的bind-address选项确实可以用于限制MySQL服务器监听的IP地址,但这与设置IP白名单在概念上有所不同。但是它也可以实现限制连接MySQL服务器。

打开配置文件,并找到[mysqld]段落,在该段落中添加如下配置:

# bind-address=ip地址
bind-address=0.0.0.0

bind-address的作用:

bind-address选项用于指定MySQL服务器绑定的IP地址。当MySQL服务器启动时,它会监听这个地址上的端口(默认是3306),以便接受来自客户端的连接请求。

  • 默认值:如果bind-address没有被设置,或者设置为0.0.0.0(对于IPv4)或::(对于IPv6),MySQL服务器将监听所有可用的网络接口上的端口。这意味着来自任何IP地址的客户端都可以尝试连接到MySQL服务器(当然,还需要考虑操作系统的防火墙规则、MySQL的用户权限设置等其他安全因素)。
  • 指定IP地址:如果你将bind-address设置为一个具体的IP地址(如192.168.1.100),MySQL服务器将只监听该IP地址上的端口。这通常用于多网卡或多IP地址的服务器环境,允许你限制MySQL服务器只在特定的网络接口上监听连接请求。

注意:bind-address选项不支持直接设置多个值来监听多个IP地址。如果你希望MySQL服务器能够监听多个IP地址,可以不设置bind-address或设置为0.0.0.0。这也是最常见的做法。

总结: bind-address是MySQL配置文件中用于指定服务器监听IP地址的选项,它可以在一定程度上限制MySQL服务器的网络可见性。然而,要实现真正的IP白名单功能,还需要结合使用操作系统的防火墙规则、MySQL的用户权限设置以及其他安全措施。

二、授权用户访问权限

在MySQL数据库中,使用 mysql库的user表主要用于管理用户权限,但它也可以与host列结合使用来限制访问。

我们可以在创建MySQL用户时指定特定的主机名或IP地址,只有从这些主机或IP地址发起的连接才能成功。

注意:这种方法并不适用于动态IP地址或IP地址范围较大的情况,因为它需要为每个IP地址或IP地址段单独设置用户。切换到 mysql库操作。

1、新建用户

CREATE USER 'charge1'@'localhost'  IDENTIFIED BY 'charge123';
CREATE USER 'charge2'@'192.168.2.243'  IDENTIFIED BY 'charge123';

格式:‘用户名’@‘登录IP或域名’。%表示没有限制,在任何主机都可以登录。比如:‘charge’@‘192.168.0.%’,表示charge这个用户只能在192.168.0 IP段登录。

注意:新建好用户,就可以连接数据库,但是如果想操作数据库,必须进行下面的授权才能操作数据库。

2、给用户授权

# 全局权限:
GRANT ALL PRIVILEGES ON  *.* TO 'charge1'@'localhost';

3、刷新权限

任何权限更改或新用户添加之后,都需要刷新权限,确保更改立即生效。

FLUSH PRIVILEGES;

4、测试

(1)用户连接数据库时,主机必须要和用户的ip一致。

在这里插入图片描述

(2)必须给用户授权之后,才能操作数据库

  • charge1用户可以正常操作。
  • chager2用户不可以正常操作,因为没有授权。

在这里插入图片描述

到此这篇关于MySQL设置白名单限制的实现的文章就介绍到这了,更多相关MySQL 白名单限制内容请搜索插件窝以前的文章或继续浏览下面的相关文章希望大家以后多多支持插件窝!