您现在的位置是:亿华云 > IT科技类资讯

MySQL修改账号的IP限制条件

亿华云2025-10-02 11:56:40【IT科技类资讯】3人已围观

简介本文转载自微信公众号「DBA闲思杂想录」,作者潇湘隐者。转载本文请联系DBA闲思杂想录公众号。在MySQL中,需要修改MySQL的一个用户的权限,需要限制特定IP地址才能访问,下面结合简单的案例,具体

本文转载自微信公众号「DBA闲思杂想录」,修限制作者潇湘隐者。改账转载本文请联系DBA闲思杂想录公众号。条件

在MySQL中,修限制需要修改MySQL的改账一个用户的权限,需要限制特定IP地址才能访问,条件下面结合简单的修限制案例,站群服务器具体演示一下. 下面测试环境为MySQL 5.6.20. 其它版本应该是改账一样的。如有其它版本与下面测试结果有出入,条件请以实际环境为准。修限制

我们先创建一个测试用户LimitIP,改账只允许192.168段的条件IP地址访问,具体权限如下所示:

mysql> GRANT SELECT ON MyDB.* TO LimitIP@192.168.% IDENTIFIED BY LimitIP; Query OK,修限制 0 rows affected (0.01 sec) mysql> GRANT INSERT ,UPDATE,DELETE ON MyDB.kkk TO LimitIP@192.168.%; Query OK, 0 rows affected (0.00 sec) mysql>  mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) mysql>  mysql> show grants for LimitIP@192.168.%; +----------------------------------------------------------------------------------------------------------------+ | Grants for LimitIP@192.168.%                                                                                   | +----------------------------------------------------------------------------------------------------------------+ | GRANT USAGE ON *.* TO LimitIP@192.168.% IDENTIFIED BY PASSWORD *72DDE03E02CC55A9478A82F3F4EBE7F639249DEC | | GRANT SELECT ON `MyDB`.* TO LimitIP@192.168.%                                                              | | GRANT INSERT, UPDATE, DELETE ON `MyDB`.`kkk` TO LimitIP@192.168.%                                          | +----------------------------------------------------------------------------------------------------------------+ 3 rows in set (0.00 sec) mysql>

假设现在收到一个需求:这个用户只允许这个IP地址192.168.103.17访问,服务器租用于是改账我打算更新mysql.user表,如下所示:

mysql> select user,条件 host from mysql.user where user=LimitIP; +---------+-----------+ | user    | host      | +---------+-----------+ | LimitIP | 192.168.% | +---------+-----------+ 1 row in set (0.00 sec) mysql> update mysql.user set host=192.168.103.17 where user=LimitIP; Query OK, 1 row affected (0.02 sec) Rows matched: 1  Changed: 1  Warnings: 0 mysql> flush privileges; Query OK, 0 rows affected (0.01 sec) mysql> select user, host from user where user=LimitIP; ERROR 1046 (3D000): No database selected mysql> use mysql; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> select user, host from user where user=LimitIP; +---------+----------------+ | user    | host           | +---------+----------------+ | LimitIP | 192.168.103.17 | +---------+----------------+ 1 row in set (0.00 sec) mysql> show grants for LimitIP@192.168.103.17; +---------------------------------------------------------------------------------------------------------------------+ | Grants for LimitIP@192.168.103.17                                                                                   | +---------------------------------------------------------------------------------------------------------------------+ | GRANT USAGE ON *.* TO LimitIP@192.168.103.17 IDENTIFIED BY PASSWORD *72DDE03E02CC55A9478A82F3F4EBE7F639249DEC | +---------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec) mysql>

上面测试发现,如果这样只修改mysql.user表, 那么之前的权限没有了,如下所示,如果你查询mysql.db、 mysql.tables_priv 发现Host的云服务器提供商字段值依然为192.168.%

mysql>  select * from mysql.db where user=LimitIP\G; 

很赞哦!(57171)