白名单(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用户不可以正常操作,因为没有授权。
– 求知若饥,虚心若愚。