
Golang 实现根据网段计算 IP 范围
背景
跨部门访问的 db,需要开 IP 白名单,但考拉暂时不能提供固定 IP,只能提供网段,本文中工具实现了子网掩码生成表示整个子网的 IP 通配符格式,后续有类似的场景可以复用这个工具
为了实现跨部门访问数据库,必须配置 IP 白名单。运维平台目前无法提供固定的 IP 地址,只能提供一个网段范围。本工具能够根据子网掩码生成表示整个网段的 IP 通配符格式。在未来遇到类似的场景时,也可以直接复用该工具,从而提高工作效率。
MySQL 授权指南:授予用户 SELECT 权限
在管理 MySQL 数据库用户权限时,授予特定权限可以增强数据库的安全性。以下是创建用户或修改现有用户权限以仅授予 SELECT 权限的详细步骤。
1. 登录 MySQL 服务器
使用具有管理员权限的用户账号登录到 MySQL 服务器。
1 | mysql -u admin_user -p |
2. 创建用户并授予 SELECT 权限
创建新用户并仅授予 SELECT 权限
如果目标用户不存在,可以通过以下步骤创建一个新用户并仅赋予其对指定数据库的 SELECT 权限。如果该用户已经存在,可以直接修改其权限。
1 | -- 创建新用户并授予SELECT权限 |
其中,ip_address_or_range
可以是一个具体的 IP 地址(例如 192.168.1.100
)或者一个 IP 范围(例如 192.168.1.%
)。database_name
则是你需要授权访问的数据库名称。
示例
假设你有一个数据库名为 my_database
,并希望创建一个仅能读取该数据库的新用户 read_user
,允许其从任意 IP 地址登录,密码为 userpassword
,则命令如下:
1 | CREATE USER 'read_user'@'%' IDENTIFIED BY 'userpassword'; |
3. 应用权限更改
在执行权限更改后,需要运行 FLUSH PRIVILEGES
命令以确保更改立即生效。
1 | FLUSH PRIVILEGES; |
Go 根据 CIDR 获取 MySQL 所需 IP 白名单配置代码
1 | package main |
代码运行结果
1 | cidr: 9.38.204.0/22, IP Range for: 9.38.204.0 - 9.38.207.255, Wildcards: [9.38.204.%, 9.38.205.%, 9.38.206.%, 9.38.207.%] |
- Thanks for your appreciation. / 感谢您的赞赏
赞赏名单
Because of your support, I realize the value of writing articles. / 由于您的支持,我才能够实现写作的价值。
本文是原创文章,采用CC BY-NC-SA 4.0协议,完整转载请注明来自Go知行
评论