新闻中心
Mysql用户权限回收与修改_mysql如何撤销用户特定数据库权限
答案是使用REVOKE语句撤销权限,如REVOKE ALL PRIVILEGES ON my_database.* FROM 'dev_user'@'localhost'; 可精细控制权限,撤销后通常无需FLUSH PRIVILEGES,但可执行以确保生效,查看权限用SHOW GRANTS,权限调整靠GRANT与REVOKE组合操作。

在MySQL中,撤销用户对特定数据库的权限,核心操作就是使用
REVOKE语句实现。它允许你精确地收回之前授予的任何权限,无论是针对整个数据库、某个表,甚至是某个特定的操作(如SELECT、INSERT)。
解决方案
要撤销MySQL用户对特定数据库的权限,你需要用到
REVOKE语句。它的基本语法是:
REVOKE [权限类型] ON [数据库名].[表名或*] FROM '用户名'@'主机名';
这里有几个关键点:
-
权限类型:可以是
SELECT
,INSERT
,UPDATE
,DELETE
,CREATE
,DROP
,ALL PRIVILEGES
等等。如果你想撤销所有权限,就用ALL PRIVILEGES
。 - **数据库名.表名或***:
database_name.*
表示针对该数据库下的所有表。database_name.table_name
表示只针对该数据库下的特定表。
- '用户名'@'主机名':指定要撤销权限的用户及其连接主机。
举几个实际的例子,这应该能让你更清晰:
-
撤销用户
dev_user
对my_database
数据库的所有权限:REVOKE ALL PRIVILEGES ON my_database.* FROM 'dev_user'@'localhost';
这条命令执行后,
dev_user
就无法再对my_database
进行任何操作了。这在我看来,是权限收回最彻底的一种方式,尤其当你需要完全移除一个用户对某个库的访问时。 -
撤销用户
report_user
对sales_data
数据库的INSERT
和UPDATE
权限,但保留SELECT
权限:REVOKE INSERT, UPDATE ON sales_data.* FROM 'report_user'@'localhost';
你看,我们可以非常精细地控制,只拿掉他不需要或不该有的操作权限。这在很多场景下特别有用,比如一个报表用户,他只需要读取数据,就不应该有修改的权限。
-
撤销用户
app_user
对user_info
数据库中customers
表的DELETE
权限:REVOKE DELETE ON user_info.customers FROM 'app_user'@'%';
这里的
%
表示该用户可以从任何主机连接。这种细粒度的权限控制,对于保护敏感数据表尤其重要。我个人觉得,在生产环境中,权限越细越好,遵循最小权限原则总是没错的。
撤销权限后,通常情况下,MySQL会立即更新内部的权限表,所以用户下次连接或执行操作时,新的权限设置就会生效。
MySQL中,撤销用户权限后是否需要刷新权限?
关于撤销权限后是否需要立即执行
FLUSH PRIVILEGES,这其实是个老生常谈的问题,也经常让人有些困惑。简单来说,在大多数现代MySQL版本(比如5.7及更高版本)中,当你使用
REVOKE语句来撤销权限时,MySQL会自动更新内存中的权限缓存以及磁盘上的权限表(
mysql数据库下的
user,
db,
tables_priv等表)。这意味着,对于新建立的连接,或者当前连接执行的后续操作,权限变更通常会立即生效,不需要手动执行
FLUSH PRIVILEGES。
QQ823店铺进存销管理平台
QQ823店铺进存销管理平台采用asp+Access开发,功能有:销售管理 定单管理 库存管理 客户管理 供应商管理 统计分析 系统权限管理等。 QQ823店铺进存销管理平台说明:管理帐号:admin管理密码:admin如修改数据库名称请修改DataBase/QQ823COM_DataBase.mdb系统要求虚拟主机要求:该系统无他特殊组件要求,asp+access虚拟机均可正常运行没有安装运行环
0
查看详情
但是,凡事总有例外,或者说一些特殊情况。我通常会在以下几种情况考虑或者干脆就执行一下
FLUSH PRIVILEGES:
- MySQL版本较老: 早期的一些MySQL版本可能在权限变更的实时性上不如新版本那么完善。
-
权限管理操作频繁且复杂: 如果你正在进行大量、复杂的权限授予和撤销操作,或者有脚本在自动化这些操作,执行一下
FLUSH PRIVILEGES
可以作为一种“确保万无一失”的习惯。它强制MySQL重新加载权限表,确保所有更改都已生效。 -
手动修改了
mysql
系统数据库中的权限表: 这是极不推荐的做法,但如果你真的这么做了,那FLUSH PRIVILEGES
就是必须的了。 -
用户会话的缓存: 尽管权限表更新了,但某些用户会话可能因为连接池或其他机制,仍然缓存了旧的权限信息。这种情况下,
FLUSH PRIVILEGES
可以帮助清理这些缓存,尽管重启应用连接可能更彻底。
所以,我的建议是,对于标准的
REVOKE操作,通常不需要。但如果你遇到权限不生效的问题,或者出于谨慎,执行一下也无妨,它不会有什么副作用。
如何查看MySQL用户当前拥有哪些权限?
了解一个用户当前到底有哪些权限,这在权限管理中是至关重要的一步,尤其是在你进行授予或撤销操作之后,需要验证结果时。最直接、最常用的方法就是使用
SHOW GRANTS语句。
语法很简单:
SHOW GRANTS FOR '用户名'@'主机名';
举个例子,要查看
dev_user在
localhost上的权限:
SHOW GRANTS FOR 'dev_user'@'localhost';
执行这条命令后,你会得到一个结果集,每行代表一个授予的权限。比如,你可能会看到类似这样的输出:
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Grants for dev_user@localhost | +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | GRANT USAGE ON *.* TO `dev_user`@`localhost` | | GRANT SELECT, INSERT, UPDATE ON `my_database`.* TO `dev_user`@`localhost` | | GRANT SELECT ON `another_database`.`some_table` TO `dev_user`@`localhost` | +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
这清晰地展示了
dev_user拥有的权限:
GRANT USAGE ON *.* TO 'dev_user'@'localhost'
:这表示用户有连接到MySQL服务器的权限,但没有对任何数据库或表的特定操作权限。这是所有用户都会有的基本权限。GRANT SELECT, INSERT, UPDATE ON my_database.* TO 'dev_user'@'localhost'
:表明该用户对my_database
数据库下的所有表拥有SELECT
,INSERT
,UPDATE
权限。GRANT SELECT ON another_database.some_table TO 'dev_user'@'localhost'
:表示该用户只对
another_database
中的some_table
表拥有SELECT
权限。
通过这种方式,你可以一目了然地确认用户权限是否符合你的预期。我个人觉得,在任何权限变更后,都应该养成
SHOW GRANTS一下的习惯,这是避免配置错误最有效的方法之一。
除了撤销,MySQL用户权限还可以如何修改或调整?
当我们谈论“修改”或“调整”MySQL用户权限时,这通常不是一个单一的命令就能完成的,而是
GRANT和
REVOKE语句的组合使用。MySQL没有一个直接的
MODIFY PRIVILEGES命令。它更像是一种“加法”和“减法”的游戏。
-
通过
GRANT
增加权限: 这是最常见的“修改”方式。如果你想给一个用户增加新的权限,比如之前只有SELECT
,现在想让他也能INSERT
,你就直接用GRANT
语句:GRANT INSERT ON my_database.* TO 'dev_user'@'localhost';
即使这个用户已经有了其他权限,
GRANT
命令也只会把新的权限添加上去,而不会覆盖或移除已有的权限。这是一种累加式的操作。 通过
REVOKE
减少权限: 就像我们前面详细讨论的,当你想从用户那里拿走某些权限时,就用REVOKE
。这其实也是一种“修改”——把权限从多变少。-
组合使用
REVOKE
和GRANT
来“重置”权限: 有时候,你可能觉得一个用户的权限结构有点混乱,或者想彻底重新定义他的权限。这时候,一个常见且稳妥的做法是:- 首先,使用
REVOKE ALL PRIVILEGES ON database_name.* FROM 'user'@'host';
彻底收回该用户对特定数据库的所有权限(或REVOKE ALL PRIVILEGES ON *.*
收回所有权限,但要小心)。 - 然后,再使用
GRANT
语句,精确地授予他所需的所有权限。 这种“先清空再重建”的方式,可以有效避免权限残留或意外的权限叠加,在我看来,对于复杂权限的梳理和调整,是比较推荐的策略。
- 首先,使用
-
ALTER USER
用于用户属性修改(非权限): 虽然不直接涉及数据库操作权限,但ALTER USER
命令是用来修改用户本身的属性的,比如修改密码、修改认证插件、锁定/解锁账户等。这在用户管理中也很重要,但它和我们讨论的数据库操作权限是两个不同的维度。ALTER USER 'dev_user'@'localhost' IDENTIFIED BY 'new_secure_password';
这只是修改了用户密码,不会影响他在数据库上的读写权限。
所以,总结来说,MySQL的权限“修改”更多是一种管理策略,通过
GRANT和
REVOKE的灵活组合来实现权限的增、减、以及“重置”。在实际操作中,我总是建议在测试环境充分验证权限设置,确保最小权限原则得到贯彻,这能大大降低潜在的安全风险。
以上就是Mysql用户权限回收与修改_mysql如何撤销用户特定数据库权限的详细内容,更多请关注其它相关文章!
# 多个
# 研学营销推广流程图怎么画
# 新网站优化需要注意什么
# 雷州外贸网站建设
# 辽阳网站优化公司排名
# 重庆霸屏seo推广
# seo专员求职简历技巧
# 世纪购网站推广
# 西宁网站建设软件下载
# 西藏seo外包必看网站
# 淘宝客营销计划推广
# 不需要
# mysql
# 是一种
# 该用户
# 这在
# 如果你
# 镜像
# 管理平台
# 离线
# 这是
# 敏感数据
# mysql使用
# mysql安装
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
抖音网页版怎么|直播|_抖音网页版开播操作指南
QQ邮箱官方网站登录入口_QQ邮箱网页版在线使用
mc.js官网登录入口 mc.js官方登录入口最新版
AO3官网镜像链接 Archive of Our Own同人文在线浏览
Win10文件资源管理器“此电脑”分组怎么关 Win10恢复经典视图【技巧】
夸克浏览器桌面版同步不了书签怎么处理 夸克浏览器跨设备同步异常解决方案
QQ邮箱网页版入口 QQ邮箱官方邮箱登录通道
126邮箱网页版官方入口 126邮箱账号在线登录平台
Win10怎么设置静态IP地址 Win10手动配置IP地址步骤【指南】
Python中高效且防溢出的双曲正弦计算:基于对数空间的优化策略
Sublime Text怎么显示空格和制表符_Sublime显示不可见字符设置
C#中解析不规范的HTML为XML 常见的坑与解决办法
如何在J*a中使用Locale处理多语言环境
黑鲨3Pro怎样在相册开漫画风滤镜_iPhone黑鲨3Pro相册开漫画风滤镜【趣味滤镜】
必由学官方登录入口 必由学教师学生账号快速访问
Safari浏览器输入栏卡顿如何解决 Safari搜索建议与缓存清理
QQ邮箱网页版邮箱入口 QQ邮箱官方登录平台
Python实现多节点属性重叠度分析教程
知乎APP怎么管理已购盐选内容_知乎APP盐选内容购买记录与查看方法
提升Kafka消费者健壮性:会话超时处理与消息处理语义
C++如何比较两个字符串_C++ string compare函数与操作符对比
HTML长属性值处理:表单action路径优化与代码规范应对
小猿搜题在线学习页面在哪_小猿搜题在线学习中心入口
高德地图家和公司地址在哪设置 高德地图通勤路线设置方法【超详细】
手机屏幕碎了但能正常使用怎么办 手机外屏碎裂的修复建议
Win11如何使用Windows Sandbox Win11沙盒功能开启与使用教程【详解】
优化 Python 函数中的条件逻辑:解决 if-else 嵌套与参数选择问题
Yandex浏览器官方网页版入口 Yandex浏览器最新版官网
魅族17怎样用浏览器译外语网页_iPhone魅族17浏览器译外语网页【即时翻译】
iwriter统一登录平台 iwrite账号密码登录页面
Safari怎么安装扩展程序 浏览器插件安装与管理方法【详解】
手机CPU怎么影响游戏体验_手机CPU对游戏性能的影响分析
微信网页版登录教程_微信网页版登录入口在哪
Go语言中对Map值调用带指针接收者方法:原理与最佳实践
qq音乐在线播放入口_qq音乐电脑版登录链接
QQ网页版官方账号入口 QQ网页版网页版登录指南
Win11怎么安装Linux子系统 Win11 WSL2安装Ubuntu及环境配置指南
在J*a中如何开发简易仓库管理与库存统计_仓库管理库存统计项目实战解析
冬*霸灯泡不亮怎么办_浴霸取暖灯一盏不亮的灯座清洁修复法
支付宝解绑银行卡步骤_支付宝如何解除绑定银行卡
age动漫网站入口 age动漫官网直接访问入口
《铁拳8》黑皮辣妹新实机:元气满满的18岁少女!
LINUX下如何进行磁盘分区_fdisk与parted工具在LINUX中的使用对比
《燕云十六声》两周内达九百万玩家!位居畅销榜第五
Composer如何处理Git子模块(submodule)依赖_Composer与Git Submodule的对比与选择
夸克AO3官网入口_AO3镜像网站2025推荐
GemBox Document HTML转PDF垂直文本渲染问题及解决方案
如何使用 Excel 发布器与 Power BI 分享 Excel 洞察
火锅吃太多会怎样 火锅吃太多会上火吗
C++ string find函数返回值npos详解_C++字符串查找失败的判断条件


2025-08-25
浏览次数:次
返回列表