如何在SQL中限制用户VMVN查看BADGEACCESS表,其余表权限不变?
如何限制用户查看指定SQL数据表
嘿,这个需求挺典型的,我来给你拆解下不同数据库系统的操作方法——毕竟不同SQL数据库的权限控制语法有点区别,你对应自己用的来就行:
MySQL/MariaDB 操作步骤
假设你已经创建了用户VMVN,现在要限制它查看BADGEACCESS表,其余表权限保留:
- 如果你之前给过
VMVN对整个数据库的SELECT权限,先撤销它对BADGEACCESS的查询权限:
REVOKE SELECT ON 你的数据库名.BADGEACCESS FROM 'VMVN'@'你的主机地址';
(注意替换你的数据库名和你的主机地址为实际值,比如localhost或者用户的IP)
2. 如果你是刚创建用户还没分配权限,直接给它指定表的查询权限:
GRANT SELECT ON 你的数据库名.EMPLOYEE TO 'VMVN'@'你的主机地址'; GRANT SELECT ON 你的数据库名.BADGE TO 'VMVN'@'你的主机地址'; GRANT SELECT ON 你的数据库名.EMPREC TO 'VMVN'@'你的主机地址';
- 最后刷新权限让设置生效:
FLUSH PRIVILEGES;
SQL Server 操作步骤
- 如果之前给过
VMVN数据库级的SELECT权限,先撤销它对BADGEACCESS的权限:
REVOKE SELECT ON OBJECT::BADGEACCESS FROM VMVN;
- 新用户的话,直接授予指定表的查询权限:
GRANT SELECT ON EMPLOYEE TO VMVN; GRANT SELECT ON BADGE TO VMVN; GRANT SELECT ON EMPREC TO VMVN;
PostgreSQL 操作步骤
- 撤销
VMVN对BADGEACCESS的查询权限(如果之前有分配):
REVOKE SELECT ON BADGEACCESS FROM VMVN;
- 新用户直接批量授予权限:
GRANT SELECT ON EMPLOYEE, BADGE, EMPREC TO VMVN;
几个关键注意点
- 执行这些命令必须用拥有管理员权限的账号(比如MySQL的
root、SQL Server的sa、PostgreSQL的postgres); - 操作完成后,记得用
VMVN账号登录测试:尝试查询BADGEACCESS应该会返回权限不足的错误,而其他表可以正常查询; - 如果
VMVN还有其他权限(比如插入、修改),你可以根据需求调整REVOKE和GRANT的权限类型,这里只针对查询权限做限制。
内容的提问来源于stack exchange,提问作者Bodhi




