十、权限与安全

一、MYSQL权限系统的工作原理
  • 对连接到数据库的用户进行身份认证,以此来判断此用户是否属于合法用户,合法的用户通过认证,不合法的用户拒绝与之连接。
  • 对通过认证的合法用户赋予相应的权限,用户可以在这些权限范围内对数据库做相应的操作
 
具体说明:    
  • 身份认证:
 对于身份认证,MYSQL是通过IP地址和用户名进行身份认证,也就是说,如果同一 个用户来自不同的IP地址,则MYSQL将其视为不同的用户。
  • 权限表层级
 当用户进行连接时,权限表的存取过程有两个阶段
  1、先从 user 表中的 host、user 和 password 这三个字段中判断连接的IP、用户名和密码是否存在于    表中,如果存在,则通过身份验证,否则拒绝连接
 
   2、如果通过身份验证,则按照权限表的顺序得到数据库权限:user->db->tables_priv->columns_priv。在这几个权限表中,权限范围依次递减,全局权限覆盖局部权限
 
   3、当用户通过权限认证,进行权限分配时,先检查全局权限表uer,如果user中对应权限为Y,则此用户对所有数据库的权限都为Y,将不再检查db,tables_priv和columns_priv。如果为N,则到db表中检查此用户对应的具体数据库,并得到db中为Y的权限,依次往下,直到columns_priv表权限取出为止。
 
二、账号管理
  • GRANT:          授予访问权限
  • REVOKE:         撤销访问权限
 
1、创建用户
    CREATE USER '用户名'@'IP地址' IDENTIFIED BY 密码
 
    示例:
 
2、授权用户
    GRANT 权限类型1,权限类型2.。。。 ON [表名 或 * 或 *.* 或 db_name.*] to 用户名@ip地址
 
    示例1:
 
    示例2:
 
    提示:
  • 常见的权限有 SELECT, INSERT, UPDATE, DELETE
  • ON后面的*.*表示对所有库的所有表拥有权限,如果你只想让这个用户只对某个数据库有权限,可以将*.*改为 数据库名.*
 
3、撤销权限
    REVOKE 权限类型1,权限类型2 ... ON [表名 或 * 或 *.* 或 db_name.*] FROM 用户名@ip地址
 
示例:
 
4、查看某个用户的权限
    SHOW GRANTS FOR 用户名@IP地址
 
示例:
 
posted @ 2020-10-22 22:36  别把最疼爱的人弄丢了  阅读(263)  评论(0编辑  收藏  举报