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

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

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

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

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,还得盯住元数据访问和系统表暴露面。权限颗粒度越细,越容易漏掉一个点。

相关文章

Unity 机器学习 基础

ML-Agents 资产导入 Unity 场景创建 Unity 代码部分 Anaconda 执行 rollerball_config.yaml 机器学习逻辑处理...

神经网络分类总结

从网络性能角度可分为连续型与离散型网络、确定性与随机性网络。 从网络结构角度可为前向网络与反馈网络。 从学习方式角度可分为有导师学习网络和无导师学习网络。 按连续突触性...

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

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

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

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

AI实战详解:Perplexity 怎么做市场调研 Perplexity 市场分析实操教程【商业】最佳实践|Duuu笔记

掌握Perplexity AI市场调研需五步:一、结构化提问嵌入地域/时间/主体/指标四要素;二、限定PDF等原始信源提升可信度;三、分步提问生成制表符分隔文本以自动导入Excel;四、启用Pro S...

前端开发高级应用:Minimax视频生成提示词中文还是英文好实战案例|Duuu笔记

优先使用英文提示词,因其更契合模型训练语料并能稳定触发视觉特征;其次可采用中英混合策略兼顾文化专有名词;纯中文适用于强本土化场景;最终需通过多指标对比验证最优语言形式。 ☞☞☞AI 智能聊天, 问答...

发表评论

访客

看不清,换一张

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