MySQL之权限
MySQL作为一种高效、可扩展、跨平台的数据库管理系统,拥有丰富的安全机制,其中之一就是权限管理。数据库的权限可以通过GRANT、REVOKE命令进行设置与取消。
GRANT命令
GRANT命令用于授权用户或角色访问某个数据库、某张表或者某个列的权限,其语法如下:
GRANT permission ON object TO user | role;
其中:
-
permission 表示授权对象的权限,常用的权限包括SELECT、INSERT、UPDATE、DELETE等。
-
object 表示授权对象,可以是数据库(如:mydb.*)、某张表(如:mydb.mytable)或某个列(如:mydb.mytable.mycolumn)。
-
user | role 表示被授权的用户或角色,多个用户或角色用逗号分隔。
REVOKE命令
REVOKE命令用于取消用户或角色的某个数据库、某张表或者某个列的权限,其语法如下:
REVOKE permission ON object FROM user | role;
其中:
-
permission 表示需要取消的权限,与GRANT命令对应,常用的权限包括SELECT、INSERT、UPDATE、DELETE等。
-
object 表示需要取消权限的对象,必须与GRANT命令中的对象一致。
-
user | role 表示需要取消权限的用户或角色,必须与GRANT命令中的用户或角色一致。
示例1
假设有一个名为mydb的数据库,其中包含一个名为mytable的表。现在需要授权一个名为user1的用户访问该表的SELECT权限,其命令如下:
GRANT SELECT ON mydb.mytable TO user1;
若需要查看当前用户的权限,可以通过以下语句进行查询:
SHOW GRANTS FOR CURRENT_USER;
如果需要取消该用户对该表的SELECT权限,可以通过以下命令进行撤销:
REVOKE SELECT ON mydb.mytable FROM user1;
示例2
假设有一个名为role1的角色,现在需要授权两个用户user2和user3拥有该角色的所有权限,其命令如下:
GRANT role1 TO user2, user3;
若需要授予该角色能访问mydb数据库下所有表的SELECT、INSERT、UPDATE权限,其命令如下:
GRANT SELECT, INSERT, UPDATE ON mydb.* TO role1;
如果需要撤销该角色拥有对某张表的所有权限,可以通过以下命令进行撤销:
REVOKE ALL PRIVILEGES ON mydb.mytable FROM role1;
即可取消该角色访问该表的SELECT、INSERT、UPDATE、DELETE权限。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MySQL之权限以及设计数据库案例讲解 - Python技术站