0

0

mysql用户只能访问部分表_mysql权限控制方法

P粉602998670

P粉602998670

发布时间:2026-02-19 08:18:37

|

921人浏览过

|

来源于php中文网

原创

mysql表级select权限需用grant select on database.table to 'user'@'host',database不可用,table可带反引号;撤销须精确匹配授权对象,不支持排除式语法;information_schema等系统库禁止显式授权;列级权限易因select 或orm导致报错。

mysql用户只能访问部分表_mysql权限控制方法

如何给 MySQL 用户授予指定表的 SELECT 权限

直接用 GRANT SELECT ON database_name.table_name TO 'user'@'host' 即可,不需要先创建用户(如果用户已存在)。注意 database_name 不能是通配符 *,必须写具体库名;table_name 可以是具体表名,也可以用反引号包裹含特殊字符的表名。

常见错误是漏掉数据库名,比如只写 GRANT SELECT ON table_name TO ...,MySQL 会报错 ERROR 1144 (42000): Illegal GRANT/REVOKE command。权限粒度最小到表级,不支持“某个库下除某几张表外全部授权”这种排除式语法。

  • 执行后必须跟 FLUSH PRIVILEGES(仅当直接操作 mysql 系统表时才强制需要;用 GRANT 命令通常自动生效)
  • 如果用户从任意主机连接,'user'@'%' 中的 % 不匹配 localhost,需额外授权 'user'@'localhost'
  • 权限是叠加的:用户已有库级 SELECT 权限,再授表级权限不会冲突,但撤销库级权限不影响已授的表级权限

撤销某张表的权限但保留其他表访问权

MySQL 不支持“撤销某张表而保留同库其他表”的原子操作,REVOKE 必须明确指定和 GRANT 完全一致的对象范围。例如之前用 GRANT SELECT ON mydb.orders TO 'u1'@'%' 授了权限,那么撤销就得写 REVOKE SELECT ON mydb.orders FROM 'u1'@'%'

容易踩的坑是误用 REVOKE SELECT ON mydb.* FROM ...——这会把整个库所有表的 SELECT 权限都撤掉,包括你本想保留的那些。

  • 没有“批量排除某几张表”的语法,要保留 9 张表、只撤 1 张,就得先 REVOKE 全部,再对那 9 张重新 GRANT
  • SHOW GRANTS FOR 'u1'@'%' 是验证当前权限的唯一可靠方式,别依赖记忆或旧文档
  • 权限变更在当前连接中立即生效,但已打开的事务不受影响

为什么对 INFORMATION_SCHEMA 表授权总是失败

MySQL 禁止对 INFORMATION_SCHEMA 显式授权,任何类似 GRANT SELECT ON INFORMATION_SCHEMA.TABLES TO ... 的语句都会报错 ERROR 1044 (42000): Access denied for user ... to database 'INFORMATION_SCHEMA'

H_Space房产网
H_Space房产网

功能说明(部分): 1,后台控制;所有前台显示页面,都在后台加以控制,不需登陆FTP即可更改全部的页面显示信息。 2,可选择用户发表的信息是否要求验证,如果选择只有通过验证后的信息才能在网页上显示。 3,推荐好友支持;当浏览信息时,可以选择“推荐”好友,只要输入对方的E-mail地址即可将此条信息发送到对的邮箱中。 4,预订信息支持;当访问者看到感兴趣的信息后,可选择“我要预订”向对方发送

下载

这不是权限没给够,而是设计限制:该库只读且元数据访问由全局 SELECT 权限或更细粒度的 SHOW DATABASES/PROCESS 等特权间接控制。普通用户默认能查自己有权限的库下的表信息,但看不到其他库结构。

  • 如果用户连 SHOW TABLES 都被拒绝,先确认是否至少有对应库的 USAGE 权限(新建用户默认有)
  • 想让应用能自动发现表结构,与其绕过限制,不如在业务库中建视图或提供元数据表
  • performance_schemasys 同样不可直接授权,逻辑一致

使用列级权限时要注意什么

MySQL 支持列级权限(如 GRANT SELECT(col1, col2) ON db.t1 TO 'u'@'%'),但实际使用率极低,因为 ORM、连接池、查询构建器往往生成 SELECT * 或动态字段列表,一旦碰到未授权列就会报错 ERROR 1142 (42000): SELECT command denied to user ... for column 'col3'

列权限是独立于表权限的,即使用户已有整表 SELECT,再单独授某几列权限也不会覆盖或冲突;但只要查询中涉及任一未授权列,整个语句就失败。

  • 无法用列权限实现“隐藏敏感字段”,因为 SELECT * 仍会触发拒绝;必须确保所有 SQL 显式列出已授权列
  • 备份工具(如 mysqldump)默认用 SELECT *,列权限会导致备份失败
  • 权限检查发生在执行阶段,不是解析阶段,所以函数、子查询中引用未授权列同样报错

权限系统本身不复杂,难的是和真实业务查询模式对齐。比如一个 Web 应用用了 Doctrine ORM,默认生成的 SQL 很可能包含未预设授权的列或临时表,上线前务必用目标用户账号连上去跑一遍完整业务流。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
数据分析工具有哪些
数据分析工具有哪些

数据分析工具有Excel、SQL、Python、R、Tableau、Power BI、SAS、SPSS和MATLAB等。详细介绍:1、Excel,具有强大的计算和数据处理功能;2、SQL,可以进行数据查询、过滤、排序、聚合等操作;3、Python,拥有丰富的数据分析库;4、R,拥有丰富的统计分析库和图形库;5、Tableau,提供了直观易用的用户界面等等。

985

2023.10.12

SQL中distinct的用法
SQL中distinct的用法

SQL中distinct的语法是“SELECT DISTINCT column1, column2,...,FROM table_name;”。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

334

2023.10.27

SQL中months_between使用方法
SQL中months_between使用方法

在SQL中,MONTHS_BETWEEN 是一个常见的函数,用于计算两个日期之间的月份差。想了解更多SQL的相关内容,可以阅读本专题下面的文章。

377

2024.02.23

SQL出现5120错误解决方法
SQL出现5120错误解决方法

SQL Server错误5120是由于没有足够的权限来访问或操作指定的数据库或文件引起的。想了解更多sql错误的相关内容,可以阅读本专题下面的文章。

1738

2024.03.06

sql procedure语法错误解决方法
sql procedure语法错误解决方法

sql procedure语法错误解决办法:1、仔细检查错误消息;2、检查语法规则;3、检查括号和引号;4、检查变量和参数;5、检查关键字和函数;6、逐步调试;7、参考文档和示例。想了解更多语法错误的相关内容,可以阅读本专题下面的文章。

374

2024.03.06

oracle数据库运行sql方法
oracle数据库运行sql方法

运行sql步骤包括:打开sql plus工具并连接到数据库。在提示符下输入sql语句。按enter键运行该语句。查看结果,错误消息或退出sql plus。想了解更多oracle数据库的相关内容,可以阅读本专题下面的文章。

1292

2024.04.07

sql中where的含义
sql中where的含义

sql中where子句用于从表中过滤数据,它基于指定条件选择特定的行。想了解更多where的相关内容,可以阅读本专题下面的文章。

585

2024.04.29

sql中删除表的语句是什么
sql中删除表的语句是什么

sql中用于删除表的语句是drop table。语法为drop table table_name;该语句将永久删除指定表的表和数据。想了解更多sql的相关内容,可以阅读本专题下面的文章。

436

2024.04.29

pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

561

2026.02.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

相关下载

更多

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
MySQL 教程
MySQL 教程

共48课时 | 2.3万人学习

MySQL 初学入门(mosh老师)
MySQL 初学入门(mosh老师)

共3课时 | 0.3万人学习

简单聊聊mysql8与网络通信
简单聊聊mysql8与网络通信

共1课时 | 834人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号