收回用户权限
撤销用户对某个数据库的全部权限
要撤销用户对某个特定数据库的全部权限,你可以使用以下的SQL语句:
REVOKE ALL PRIVILEGES ON database_name.* FROM 'user_name'@'host';
这里,database_name
需要替换为实际的数据库名称,user_name
和host
分别代表用户的用户名和宿主名,执行该语句后,指定用户在指定数据库上的所有权限将被撤销。
撤销用户对某个数据库的部分权限
如果只需要撤销用户对数据库中某些操作的权限,如插入、更新、删除等,可以使用以下SQL语句:
REVOKE INSERT, UPDATE, DELETE ON database_name.* FROM 'user_name'@'host';
通过在REVOKE
后指定具体的权限类型,你可以精确地控制要撤销的权限范围。
撤销用户对某个数据库的某张表的部分权限
对于更细粒度的权限控制,比如仅撤销用户对某个数据库中某张表的某些操作权限,可以采用如下语句:
REVOKE INSERT, UPDATE, DELETE ON database_name.table_name FROM 'user_name'@'host';
将table_name
替换为实际的表名,此操作将撤销用户在这张表上的部分操作权限。
撤销用户对任何数据库的任何表的部分权限
有时,你可能需要限制用户对任何数据库的任何表进行某些操作的权限,例如撤销查询权限,可以通过以下语句实现:
REVOKE SELECT ON *.* FROM 'user_name'@'host';
这将撤销用户在所有数据库和所有表上的查询权限。
撤销 WITH GRANT OPTION 权限
当用户被授予了WITH GRANT OPTION
权限时,他们有能力将自己所拥有的权限授予其他用户,撤销这一特殊权限,需使用以下语句:
REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'user_name'@'host';
确保REVOKE
语句与之前的GRANT
语句完全一致,是避免撤销失败的关键。
权限表
了解MySQL如何管理权限也很重要,全局权限存储在mysql.user
表中,适用于服务器内所有数据库,数据库级别的权限存储在mysql.db
和mysql.host
表中,而表层级的权限直接与指定的表关联。
撤销权限的注意事项
撤销权限时,语句必须与授权语句完全一致,否则撤销可能不会生效。
USAGE
权限无法撤销,创建用户时会自动赋予。
默认情况下,新建的用户拥有对test
数据库的全部权限,且这些权限不能被撤销。
常见问题FAQs
Q1: 为什么撤销操作没有生效?
A1: 确保撤销语句与之前的授权语句完全匹配,包括用户名、主机和授权的具体内容。
Q2: 如何检查用户当前的权限?
A2: 可以使用SHOW GRANTS
命令来查看用户的权限,SHOW GRANTS FOR 'user_name'@'host';
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/843780.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复