mysql如何配置用户只读权限_授予SELECT权限与限制操作

能,但必须显式撤销所有非SELECT权限并检查层级、角色和会话缓存,否则可能因旧权限、全局权限、角色叠加或未重连导致绕过。MySQL 用户只读权限到底能不能靠 GRANT SELECT 实现能,但必须同时撤销所有其他权限,否则用户可能通过其他方式绕过限制。MySQL 的权限模型是"显式授予",不是"默认拒绝",GRANT SELECT 只加权限,不删权限。常见错误现象:GRANT SELECT ON db.* TO 'ro_user'@'%'; 执行后,用户仍能 DROP TABLE 或 INSERT------因为旧账号之前被授予过 ALL PRIVILEGES,或者被赋予了角色(如 mysql.session)间接带出高权限。先用 SHOW GRANTS FOR 'ro_user'@'%'; 确认当前所有权限,别猜务必搭配 REVOKE INSERT, UPDATE, DELETE, DROP, CREATE, ALTER, INDEX, LOCK TABLES, EXECUTE ON db.* FROM 'ro_user'@'%';如果用户有全局权限(比如 USAGE 以外的 GRANT OPTION),也得单独 revoke,否则可能越权授权给他人只读权限要覆盖哪些对象层级才真正安全MySQL 权限按层级生效:全局(*)、库级(db.*)、表级(db.table)、列级(db.table(col))。只读不是"设一次就完事",漏掉某一层就等于留后门。使用场景:多租户 SaaS 中为客户数据库配只读账号;BI 工具连接数仓时禁止写操作;备份脚本账户需最小权限。优先在库级授权:GRANT SELECT ON `myapp_prod`.* TO 'bi_reader'@'10.20.%';避免用 GRANT SELECT ON *.* ------ 这会包含 mysql 系统库,用户可查 mysql.user 密码哈希(5.7+ 是 authentication_string 字段)如果业务明确只要某张表,用表级更细:GRANT SELECT ON `logdb`.`events_2024` TO 'log_reader'@'%';,但注意分区表、临时表、视图依赖的底层表也要检查权限REVOKE 后为什么 SHOW GRANTS 还显示旧权限权限变更不会实时刷新到已存在的连接,这是 MySQL 的设计行为。用户当前会话仍保留旧权限,新连接才生效。 Cleanup.pictures 智能移除图片中的物体、文本、污迹、人物或任何不想要的东西

相关推荐
学测绘的小杨12 小时前
CompassFusion:一个从 GNSS 到 GNSS/INS 组合导航的独立工程包
python
ClouGence17 小时前
Oracle 数据同步为什么会出现数据不一致?长事务是常被忽略的原因
数据库·后端·oracle
zzzzzz31018 小时前
当产品经理说这个很简单:我用Python自动化处理奇葩需求的实战指南
python·pycharm·产品经理
雪隐19 小时前
个人电脑玩AI-06让5060 Ti给你打工——不光能画画,Qwen3-TTS还能学人说话,连我老板都信了!
人工智能·后端·python
飞将20 小时前
从零实现数据库(2)——HashIndex + IndexManager
数据库
兵慌码乱1 天前
面向桌面端的资产管理系统分层架构设计与核心模块实现
python·系统架构·sqlite·pyqt5·数据库设计·桌面应用开发·mvc架构
hboot1 天前
AI工程师第三课 - 机器学习基础
python·scikit-learn·kaggle
顾林海2 天前
Agent入门阶段-编程基础-Python:流程控制
python·agent·ai编程
呱呱复呱呱2 天前
Django CBV 源码解读:一个请求是怎么找到你的 get() 方法的
python·django
Nturmoils2 天前
订单列表慢查询,先看 WHERE、ORDER BY 和 LIMIT
数据库