如何设置只允许特定sql_mysql操作限制

发布时间 - 2026-01-06 00:00:00    点击率:
应为每个应用创建最小权限专用用户,按需授予SELECT、INSERT等具体权限,禁用高危操作并定期审计。

要限制 MySQL 用户只能执行特定的 SQL 操作(比如只允许 SELECT,禁止 INSERT/UPDATE/DELETE),核心方法是通过 **精细化的权限控制**,而不是靠应用层过滤或 SQL 解析——后者不可靠且易绕过。

创建最小权限专用用户

不要复用高权限账号(如 root 或管理员账号)。应为每个应用/场景单独建用户,并只授予必要权限:

  • 只读需求:仅授权 SELECT 权限到指定数据库或表
  • 写入限制:若需写入,可只授 INSERT(不给 UPDATE/DELETE),或进一步限定到某几张表
  • 避免使用 GRANT ALL PRIVILEGES,哪怕在测试环境也应养成最小权限习惯

按库、按表精确授权

MySQL 支持多层级权限(全局 → 数据库 → 表 → 列),推荐按需下放:

-- 只允许 user_ro 对 db_app 的所有表执行 SELECT
GRANT SELECT ON db_app.* TO 'user_ro'@'192.168.1.%';

-- 只允许 user_log 对 db_app.log_table 执行 INSERT(常用于日志写入) GRANT INSERT ON db_app.log_table TO 'user_log'@'%';

-- 刷新权限使生效 FLUSH PRIVILEGES;

注意:REVOKE 可撤销已有权限,例如 REVOKE UPDATE, DELETE ON db_app.* FROM 'user_ro'@'%';

禁用高危操作(补充防护)

权限控制是主防线,但可叠加以下配置增强安全性:

  • my.cnf 中设置 sql_safe_updates = 1,防止没有 WHERE 的 UPDATE/DELETE(对已授权用户生效)
  • 禁用本地文件操作:启动时加 --secure-file-priv=NULL,阻止 LOAD DATA INFILE / SELECT ... INTO OUTFILE
  • 避免开放 PROCESSSUPERFILE 等管理类权限,除非绝对必要

验证与持续维护

授权后务必验证实际行为是否符合预期:

  • 用新用户登录,尝试执行非授权语句(如 DELETE FROM t1),确认报错 ERROR 1142 (42000): DELETE command denied
  • 定期审计用户权限:SHOW GRANTS FOR 'username'@'host';
  • 删除不再使用的账号:DROP USER 'old_user'@'%';

权限不是设一次就一劳永逸,需随业务变化动态调整。


# mysql  # app  # sql  # NULL  # for  # select  # Error  # delete  # 数据库  # 只允许  # 按需  # 已有  # 不给  # 几张  # 报错  # 也应  # 启动时  # 管理类  # 是否符合 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何在搬瓦工VPS快速搭建网站?  如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】  作用域操作符会触发自动加载吗_php类自动加载机制与::调用【教程】  Laravel如何实现用户角色和权限系统_Laravel角色权限管理机制  如何用好域名打造高点击率的自主建站?  如何用搬瓦工VPS快速搭建个人网站?  Laravel如何从数据库删除数据_Laravel destroy和delete方法区别  如何获取免费开源的自助建站系统源码?  如何在万网主机上快速搭建网站?  Laravel如何为API生成Swagger或OpenAPI文档  VIVO手机上del键无效OnKeyListener不响应的原因及解决方法  Laravel怎么上传文件_Laravel图片上传及存储配置  Android自定义控件实现温度旋转按钮效果  JavaScript中如何操作剪贴板_ClipboardAPI怎么用  个人网站制作流程图片大全,个人网站如何注销?  Android使用GridView实现日历的简单功能  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】  如何在HTML表单中获取用户输入并结合JavaScript动态控制复利计算循环  JS去除重复并统计数量的实现方法  iOS验证手机号的正则表达式  如何在阿里云香港服务器快速搭建网站?  进行网站优化必须要坚持的四大原则  如何在景安服务器上快速搭建个人网站?  Linux网络带宽限制_tc配置实践解析【教程】  悟空识字如何进行跟读录音_悟空识字开启麦克风权限与录音  canvas 画布在主流浏览器中的尺寸限制详细介绍  详解jQuery中基本的动画方法  详解Android中Activity的四大启动模式实验简述  详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  如何利用DOS批处理实现定时关机操作详解  Laravel怎么生成二维码图片_Laravel集成Simple-QrCode扩展包与参数设置【实战】  Laravel如何实现模型的全局作用域?(Global Scope示例)  Laravel如何集成微信支付SDK_Laravel使用yansongda-pay实现扫码支付【实战】  如何基于PHP生成高效IDC网络公司建站源码?  如何快速辨别茅台真假?关键步骤解析  logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?  如何快速生成橙子建站落地页链接?  php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】  Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程  Linux后台任务运行方法_nohup与&使用技巧【技巧】  简单实现Android验证码  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  黑客如何利用漏洞与弱口令入侵网站服务器?  Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  谷歌浏览器如何更改浏览器主题 Google Chrome主题设置教程