当前位置:首页 > AI技术 > 正文内容

开发mysql如何创建只读权限账户 过GRANT SELECT现权限管控案例|Duuu笔记

admin4个月前 (04-08)AI技术113

生产环境中的前端应用实践

GRANT SELECT必须写database_name.而非仅database_name,因MySQL不支持直接授予数据库对象SELECT权限;漏掉.会静默失败,且.授权极危险,应逐库显式授权并注意performance_schema等系统表暴露风险。

创建只读账户时,GRANT SELECT 为什么不能只写数据库名?

MySQL 的

GRANT SELECT

权限必须明确作用范围,只写

database_name.*

是合法的,但若漏掉末尾的

.*

(比如写成

database_name

),命令会静默失败——不报错,也不生效。这是因为 MySQL 把不带通配符的数据库名当作“数据库级对象名”,而

SELECT

权限不支持直接授予数据库对象本身,只支持表(

db.table

)或库下所有表(

db.*

)。

实操建议:

始终用

GRANT SELECT ON database_name.* TO 'user'@'host';

,别省略

.*

如果只想限制到某些表,写成

GRANT SELECT ON database_name.table1 TO ...

GRANT SELECT ON database_name.table2 TO ...

,不能合并成一条语句授多个表

执行后必须跟

FLUSH PRIVILEGES;

,否则权限不会立即生效(尤其在非 super 用户修改后)

只读账户连不上?检查 host 匹配和 authentication plugin

常见错误现象是:用户创建成功、权限也 GRANT 了,但客户端连接时报

Access denied for user 'ro_user'@'192.168.1.100'

。这通常不是权限问题,而是

host

字段没对上,或者 MySQL 8.0+ 默认用了

caching_sha2_password

插件,而旧客户端不支持。

实操建议:

创建时显式指定 host:

CREATE USER 'ro_user'@'192.168.1.%' IDENTIFIED BY 'pwd';

,避免依赖默认的

%

(可能被防火墙或网络策略拦截)

MySQL 8.0+ 若需兼容老客户端,建用户时加

IDENTIFIED WITH mysql_native_password BY 'pwd'

确认用户实际从哪个 IP 连入:在客户端执行

SELECT USER(), CURRENT_USER();

,前者是“你声称是谁”,后者是“MySQL 认为你是谁”,两者不一致就说明 host 匹配失败

GRANT SELECT ON *.* 有风险吗?

可以,但非常危险。

GRANT SELECT ON *.*

看似方便,实际会把所有库(包括

mysql

information_schema

performance_schema

)的表都开放只读。攻击者能从中提取用户哈希、权限配置、SQL 模式等敏感元数据。

Action Figure AI

借助Action Figure AI的先进技术,瞬间将照片转化为定制动作人偶。

下载

实操建议:

永远不要对生产环境用

*.*

,哪怕只是临时查问题

如果真要跨库只读,逐个显式授权:

GRANT SELECT ON db1.* TO ...

GRANT SELECT ON db2.* TO ...

注意

information_schema

默认对所有用户可读,但部分视图(如

PROCESSLIST

)需要额外权限,

GRANT SELECT ON *.*

会意外放开这些

只读账户还能执行哪些“非查询”操作?

SELECT

权限本身不包含事务控制、锁表、DDL 等能力,但仍有几个容易被忽略的“旁路动作”:

实操建议:

仍可执行

SHOW CREATE TABLE

SHOW INDEX

EXPLAIN

—— 它们依赖表级

SELECT

权限,不算额外授权

可调用某些内置函数,如

NOW()

USER()

DATABASE()

,但不能调用写入型函数(如

UUID_SHORT()

在某些版本会触发内部写)

不能执行

SELECT ... INTO OUTFILE

,除非额外授予

FILE

权限(极不推荐)

MySQL 8.0+ 中,即使只有

SELECT

,也能通过

SELECT * FROM performance_schema.events_statements_current

看到其他用户的 SQL(需确认

performance_schema

是否启用且未禁用相关表)

真正严格的只读,不只是关掉 INSERT/UPDATE/DELETE,还得盯住元数据访问和系统表暴露面。权限颗粒度越细,越容易漏掉一个点。

相关文章

什么是人工智能 ?

您可以使用 ML 训练 AI,使其精确、快速地执行任务。这可以通过自动化员工感到吃力或厌烦的业务部分来提高运营效率。同样,您可以使用 AI 自动化来腾出员工资源,用于更复杂和更具创造性的工作。...

从入门到精通:前端开发之骡子快跑支持热点借势吗 骡子快跑节日营销文案生成|Duuu笔记

骡子快跑平台提供五步节日营销文案生成路径:一、调用内置32个节日模板库;二、输入热点事件触发动态生成;三、绑定自有素材库实现个性化延展;四、多角色视角协同输出;五、接入微信生态直发并校验合规性。 ☞...

bp神经网络是什么网络,神经网络和bp神经网络

1、前馈神经网络:一种最简单的神经网络,各神经元分层排列。每个神经元只与前一层的神经元相连。接收前一层的输出,并输出给下一层.各层间没有反馈。 2、BP神经网络:是一种按照误差逆向传播...

深入理解AI:WorkBuddy 怎么做组织架构图 WorkBuddy 组织架构图生成教程【实战】完全指南|Duuu笔记

WorkBuddy可通过四种方式生成组织架构图:一、用自然语言指令触发AI自动解析并渲染Mermaid图表;二、上传Excel结构化数据映射字段后批量构建动态树状图;三、启用OpenClaw技能包对接...

深入理解前端开发:零基础教程:怎么用 Gemini 自动生成短视频脚本与拍摄大纲完全指南|Duuu笔记

需明确输入指令、理解输出逻辑并合理拆解内容:一、构建含角色/任务/格式等要素的提示词;二、追加分镜与时间轴约束优化专业性;三、转译为带道具编号与颜色标记的执行清单;四、用Gemini校验注意力断点并迭...

前端开发高级应用:骡子快跑支持日程安排吗 骡子快跑时间管理助手用法实战案例|Duuu笔记

骡子快跑具备日程安排能力,可通过计算机模式构建长效日程代理、自然语言注入日历事件、绑定外部日历实现双向同步三种方式实现。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 Dee...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。