MySQL设置白名单,允许单个IP或某段节点登录

MySQL设置白名单:

1、查询哪些机器有登陆的权限

use mysql;
select Host,User from user;
+-----------+---------------+
| Host      | User          |
+-----------+---------------+
| %         | root          |
| localhost | mysql.session |
| localhost | mysql.sys     |
| localhost | root          |
+-----------+---------------+
4 rows in set (0.00 sec)

2、允许指定IP和某一段内可以登陆

GRANT ALL ON *.* to root@'192.168.192.134' IDENTIFIED BY '密码';

MySQL通配符不是用* 而是用 %

允许一个网段登录,1个通配符或多个通配符,都需要增加WITH GRANT OPTION参数(如果不增加此参则无法实现,文档最后有官方解释)

GRANT ALL PRIVILEGES ON *.* TO root@'192.168.192.%' IDENTIFIED BY 'root' WITH GRANT OPTION;

或 
GRANT ALL PRIVILEGES ON *.* TO root@'192.168.%.%' IDENTIFIED BY 'root' WITH GRANT OPTION;

3、删除白名单用户权限:(确定上一步指定的IP可以登陆后去除所有节点登陆权限)

如果Host出现%则表示任意节点都可以登陆,可将%的项去除,实现仅白名单登录目的

DELETE FROM user WHERE User='root' and Host='%';

4、修改权限之后刷新生效

FLUSH PRIVILEGES;

5、验证

mysql> select host,user from user;
+-----------------+---------------+
| host            | user          |
+-----------------+---------------+
| 192.168.192.%   | root          |
| 192.168.192.134 | root          |
| localhost       | mysql.session |
| localhost       | mysql.sys     |
| localhost       | root          |
+-----------------+---------------+
5 rows in set (0.00 sec)

授权节点登录正常授权用户
未授权节点登录异常
未授权用户

然后官网查了下GRANT OPTION参数:

https://dev.mysql.com/doc/refman/5.7/en/privileges-provided.html

GRANT OPTION参数:
在这里插入图片描述“允许用户将自己的权限授予其他用户,两个拥有不同权限且具有GRANT OPTION权限的用户可以组合权限"

继续授权 ( WITH GRANT OPTION)

本文参考:

https://zhuleichina.github.io/2018/01/21/mysql%E6%95%B0%E6%8D%AE%E5%BA%93%E8%BF%9C%E7%A8%8B%E8%AE%BF%E9%97%AE%E7%99%BD%E5%90%8D%E5%8D%95%E8%AE%BE%E7%BD%AE.html

### 回答1: 在 MySQL 中,你可以通过设置访问控制列表(ACL)来实现白名单的功能。具体步骤如下: 1. 创建一个新的 MySQL 用户并为其授权访问特定的数据库表格。 ``` CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON dbname.* TO 'newuser'@'localhost'; ``` 2. 禁止所有其他用户访问数据库表格。 ``` REVOKE ALL PRIVILEGES ON dbname.* FROM 'olduser'@'localhost'; ``` 3. 如果需要,可以重复 step 1 和 step 2 操作,以添加更多的用户删除已有的用户。 请注意,上述操作仅限于本地 MySQL 服务器。如果你需要设置远程白名单,请在上述命令中将“localhost”替换为适当的 IP 地址主机名。另外,确保你的 MySQL 服务器已配置为仅接受来自白名单中的 IP 地址的连接。 ### 回答2: MySQL 设置白名单是一种安全措施,用于限制数据库访问只允许特定的IP地址主机访问。以下是设置MySQL白名单的步骤: 1. 登录MySQL数据库服务器,可以使用root用户具有适当权限的用户账号。 2. 使用以下命令进入MySQL控制台: ```mysql -u root -p``` 其中,-u表示指定用户名,-p表示需要输入密码。 3. 输入密码后,进入MySQL控制台。 4. 使用以下命令创建一个新的数据库用户账号,并授权该账号可以从指定IP地址主机访问数据库: ```CREATE USER '用户名'@'访问IP地址' IDENTIFIED BY '密码';``` 其中,'用户名'表示要创建的用户账号的名称,'访问IP地址'表示允许该用户从哪个IP地址访问数据库,'密码'表示用户账号的密码。 5. 授权该用户访问数据库的权限: ```GRANT ALL PRIVILEGES ON 数据库名称.* TO '用户名'@'访问IP地址';``` 其中,'数据库名称'表示要授权用户访问的数据库的名称,'用户名'和'访问IP地址'与步骤4中创建的用户账号一致。 6. 最后,将修改保存并退出MySQL控制台: ```FLUSH PRIVILEGES;``` ```EXIT;``` 这样,在设置IP地址主机访问数据库时,只有被授权的用户账号才能成功链接和操作MySQL数据库,有效提高了数据库的安全性。 ### 回答3: MySQL 设置白名单是指通过配置 MySQL 服务器的访问控制列表,限制只允许特定的 IP 地址主机访问 MySQL 服务器。 要设置白名单,首先需要登录MySQL 服务器管理工具,如 MySQL 命令行界面使用图形化工具(如 phpMyAdmin)。 在登录MySQL 服务器管理工具后,可以使用以下步骤设置白名单: 1. 查看当前的 MySQL 配置文件,找到并编辑 MySQL 配置文件(通常名为 my.cnf my.ini)。可以使用以下命令找到配置文件的位置: ```shell mysql --help | grep "Default options" ``` 打开该文件。 2. 在配置文件中找到 [mysqld] 部分。 3. 如果还没有设置 skip-networking 这一行的注释(即没有被 # 符号注释掉),请将其注释掉。该选项允许 MySQL 监听网络请求。 4. 在 [mysqld] 下添加以下行来设置白名单(假设只允许 IP 地址为 192.168.1.100 和 192.168.1.101 的主机访问 MySQL 服务器): ```shell bind-address = 0.0.0.0 # 可设置多个允许IP 地址,用逗号隔开 # 具体例子如下: # skip-networking # bind-address = 0.0.0.0 # # 只允许 192.168.1.100 访问 # # 可以使用 IP 地址主机名 # # 如果使用主机名,请确保主机名能正确解析为 IP 地址 # # 如果使用 IP 地址,请注释掉以下两行 # # pid-file = /var/run/mysqld/mysqld.pid # # socket = /var/run/mysqld/mysqld.sock # # 可设置多个允许IP 地址,用逗号隔开 # # 具体例子如下: # # bind-address = 0.0.0.0 # # bind-address = 192.168.1.100,192.168.1.101 # # 允许特定 IP 地址段访问,如 # # bind-address = 192.168.1.0/24 bind-address = 192.168.1.100,192.168.1.101 ``` 修改 bind-address 为允许访问 MySQL 服务器的 IP 地址列表。 5. 保存并关闭配置文件。 6. 重新启动 MySQL 服务器以使配置生效,可以使用以下命令重启 MySQL 服务器: ```shell sudo service mysql restart ``` 根据操作系统不同,重启命令可能会有所不同。 通过以上步骤,MySQL 服务器将只允许白名单中列出的 IP 地址主机访问,并拒绝其他 IP 地址主机的访问请求。请根据实际需求调整 IP 地址列表。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值