news 2026/9/30 18:24:49

MySQL的权限管理的简单介绍

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MySQL的权限管理的简单介绍

在 MySQL 中,用户查看自己的权限和设置(修改)权限是两个不同的操作:

  • 查看权限:普通用户可自行操作
  • 设置/修改权限:必须由管理员(如 root)执行,普通用户不能给自己授权(除非被授予GRANT OPTION)

下面分两部分详细说明:


一、✅ 用户如何查看自己的权限?

方法 1:使用SHOW GRANTS(最推荐)

-- 查看当前用户的全部权限SHOWGRANTS;

✅ 输出示例:

+------------------------------------------------------------------+|Grantsfor'app_user'@'%'|+------------------------------------------------------------------+|GRANTUSAGEON*.*TO`app_user`@`%`||GRANTSELECT,INSERT,UPDATEON`shop_db`.*TO`app_user`@`%`|+------------------------------------------------------------------+
  • USAGE表示“能连接”,无实际数据权限
  • 第二行表示:对shop_db库的所有表有查询、插入、更新权限

方法 2:确认当前身份(避免混淆)

-- 查看当前会话使用的账号SELECTUSER();-- 你登录时用的账号(如 'app_user'@'192.168.1.50')SELECTCURRENT_USER();-- MySQL 实际用于权限校验的账号(如 'app_user'@'%')

💡 通常CURRENT_USER()才是权限匹配的依据。


方法 3:检查是否有某项具体权限(高级)

-- 检查是否对某个库有 SELECT 权限SELECTTABLE_SCHEMAASdatabase_name,PRIVILEGE_TYPEFROMINFORMATION_SCHEMA.SCHEMA_PRIVILEGESWHEREGRANTEE=CONCAT('''',REPLACE(CURRENT_USER(),'@','''@'''),'''')ANDPRIVILEGE_TYPE='SELECT';

⚠️ 普通用户一般用不到,SHOW GRANTS已足够。


二、🛠️ 如何设置(授予)权限?(需管理员操作)

🔒重要前提:
普通用户无法给自己授权!必须由具有GRANT OPTION权限的管理员(如 root)执行。

步骤 1:管理员登录 MySQL

mysql -u root -p

步骤 2:使用GRANT语句授予权限

🌰 场景 1:授予数据库级权限(最常用)
-- 授予 app_user 对 shop_db 库的 增删改查 权限GRANTSELECT,INSERT,UPDATE,DELETEONshop_db.*TO'app_user'@'%';-- 刷新权限(MySQL 8.0+ 通常不需要,但安全起见可加)FLUSHPRIVILEGES;
🌰 场景 2:授予只读权限
GRANTSELECTONshop_db.*TO'readonly_user'@'192.168.1.%';
🌰 场景 3:授予所有权限(慎用!)
GRANTALLPRIVILEGESONshop_db.*TO'admin_user'@'localhost';
🌰 场景 4:允许该用户再授权给他人(危险!)
GRANTSELECTONshop_db.*TO'user'@'%'WITHGRANTOPTION;

常用权限类型速查表

权限作用
SELECT查询数据
INSERT插入数据
UPDATE修改数据
DELETE删除数据
CREATE创建表/库
DROP删除表/库
ALTER修改表结构
INDEX创建/删除索引
EXECUTE执行存储过程
ALL PRIVILEGES所有权限(不含GRANT OPTION)

📌 语法格式:

GRANT权限列表ON数据库.表TO'用户名'@'主机';

步骤 3:验证权限是否生效

管理员可查看刚授予的权限:

SHOWGRANTSFOR'app_user'@'%';

用户重新连接后即可使用新权限。


三、❌ 撤销权限(Revoke)

管理员也可随时收回权限:

-- 撤销 app_user 的 DELETE 权限REVOKEDELETEONshop_db.*FROM'app_user'@'%';-- 撤销所有权限REVOKEALLPRIVILEGES,GRANTOPTIONFROM'app_user'@'%';

四、💡 最佳实践建议

对普通用户:

  • 使用SHOW GRANTS;快速了解自己能做什么
  • 不要尝试直接修改mysql.user表(会导致权限不一致)

对管理员:

  • 最小权限原则:只给业务必需的权限(如 Web 应用通常不需要DROP)
  • 限制主机范围:如'app_user'@'10.0.0.%'而非'app_user'@'%'
  • 避免使用 root 跑应用!创建专用账号

五、常见问题解答

Q:为什么我执行GRANT报错 “Access denied”?

A:你当前用户没有GRANT OPTION权限。请联系 DBA 或用 root 操作。

Q:授予权限后,应用仍报 “Permission denied”?

A:检查:

  1. 是否连接的是正确的数据库?
  2. 用户 host 是否匹配?('user'@'localhost'≠'user'@'%')
  3. 是否需要重启应用?(某些连接池会缓存权限)

Q:能否授权到列级别?

A:可以,但极少用:

GRANTSELECT(name,email)ONshop_db.usersTO'user'@'%';

✅ 总结

操作谁执行命令
查看自己权限任意用户SHOW GRANTS;
授予/修改权限管理员GRANT ... TO 'user'@'host';
撤销权限管理员REVOKE ... FROM 'user'@'host';

🔐核心原则:
权限管理 = 安全基石,务必遵循最小权限、明确范围、定期审计。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/29 8:42:19

星图AI平台优化指南:让PETRV2-BEV模型训练速度提升3倍

星图AI平台优化指南:让PETRV2-BEV模型训练速度提升3倍 在自动驾驶感知系统开发中,BEV(鸟瞰视角)3D目标检测正成为多传感器融合方案的核心环节。PETRV2作为当前主流的纯视觉BEV检测模型之一,凭借其层次化BEV Query设计…

作者头像 李华
网站建设 2026/9/30 4:13:35

零配置启动Z-Image-Turbo,Gradio界面太友好了

零配置启动Z-Image-Turbo,Gradio界面太友好了 你有没有遇到过这样的情况:兴致勃勃想试试最新的AI绘画模型,结果光是下载模型、配置环境就花了一整天?更别提各种报错、依赖冲突,最后还没跑起来。今天我要分享的这个方案…

作者头像 李华
网站建设 2026/9/27 22:07:09

NeoZygisk终极指南:掌握Android系统Zygote注入技术

NeoZygisk终极指南:掌握Android系统Zygote注入技术 【免费下载链接】NeoZygisk Zygote injection with ptrace 项目地址: https://gitcode.com/gh_mirrors/ne/NeoZygisk 在Android应用启动优化的技术领域,Zygote注入一直是开发者关注的焦点。NeoZ…

作者头像 李华
网站建设 2026/9/29 8:55:24

DeepSeek-OCR-WEBUI核心优势解析|附私有化部署完整流程

DeepSeek-OCR-WEBUI核心优势解析|附私有化部署完整流程 1. OCR技术的演进与DeepSeek-OCR的定位 光学字符识别(OCR)早已不是新鲜概念,但传统OCR系统在面对模糊、倾斜、复杂背景或手写体时常常束手无策。随着深度学习的发展&#…

作者头像 李华
网站建设 2026/9/29 20:35:55

Qwen3-Embedding-4B为何总报错?环境配置问题排查教程

Qwen3-Embedding-4B为何总报错?环境配置问题排查教程 你是不是也在尝试部署 Qwen3-Embedding-4B 向量服务时频频遇到报错?明明代码看着没问题,但一调用就失败,返回空结果、连接拒绝,或者模型加载异常。别急&#xff0…

作者头像 李华
网站建设 2026/9/27 22:09:43

从噪声中提取纯净人声|FRCRN语音降噪镜像应用全解析

从噪声中提取纯净人声|FRCRN语音降噪镜像应用全解析 你有没有遇到过这样的情况:一段重要的会议录音,背景里却混着空调嗡鸣、键盘敲击甚至街头车流?又或者,你在户外录制的采访音频,因为风噪太大而几乎无法听…

作者头像 李华