注:本文章是作者学生时期所作,如有错误,请大佬指出
基本概念:
查看MySQL的所有权限:show privileges ;
大体分类:
(1): CREATE、 DROP、ALTER ,可以创建、删除、修改数据库和表。
(2): SELECT 、 INSERT 、 UPDATE、 DELETE 权限 允许在数据库现有的表上增删改查的操作
(3): INDEX 权限 允许创建或删除索引, INDEX 适用于已 有的表
(4): CREATE ROUTINE、 ALTER ROUTINE、 EXECUTE 用来创建、删除、执行的 函数
(5): GRANT 权限 允许授权给其他用户
示意图:
授予权限的原则:
(1): 只授予能 满足需要的最小权限 ,防止用户干坏事。比如用户只是需要查询,那就只给 select 权限就可以了,不要给用户赋予update 、 insert 或者 delete 权限
(2):创建用户的时候 限制用户的登录主机 ,一般是限制成指定 IP 或者内网 IP 段。
(3):为每个用户 设置满足密码复杂度的密码 。
(4): 定期清理不需要的用户 ,回收权限或者删除用户。
权限管理:
授予权限:
GRANT 权限1, 权限2,…权限n ON 数据库名称.表名称 TO 用户名@' % | localhost '
例:
(1): grant all on SSM.* to zhangsan@'%';
将 SSM 数据库中所有表的所有权限都给 zhangsan@'%' 用户
(2):grant insert, delete, update, select on `SQLAdvanced`.`test_index` to 'zhangsan'@'%'
将 SQLAdvanced数据库下的 test_index 表的增删改查权限赋给用户 'zhangsan'@'%'
查看权限:
show grants; 查看当前用户权限
show grants for 用户名@' % | localhost'; 查看指定用户权限
收回权限:
REVOKE 权限1,权限2,…权限n ON 数据库名称.表名称 FROM 用户名@用户地址;
例:
revoke all on SSM.* from zhangsan@' % ';
收回 zhangsan@' % ' 用户对于 SSM 数据库中所有表的所有权限
权限表:
User表:
字段:
权限列:
Grant_priv字段 表示是否拥有 GRANT 权限
Shutdown_priv 表示是否拥有停止MySQL服务的权限
Super_priv字段 表示是否拥有超级权限
Execute_priv: 表示是否拥有EXECUTE权限。拥有EXECUTE权限,可以执行存储过程和函数。
Select_priv , Insert_priv,Update_priv等 表示是否拥有对所有表的增删改查的权限
注: 除 root 用户外,其他用户默认都是 false
表字段示意图:
db表:
字段:
用户列 :
db表用户列有3个字段,分别是Host、User、Db。这3个字段分别表示主机名、用户名和数据库名。表示从某个主机连接某个用户对某个数据库的操作权限,这3个字段的组合构成了db表的主键。
权限列:
Create_routine_priv和Alter_routine_priv这两个字段决定用户是否具有创建和修改存储过程的权限。
字段示意图: