MySQL 安全体系知识要点
1.MySQL权限系统
MySQL权限系统通过下面两个阶段进行认证:
(1)对连接的用户进行身份验证,合法的用户通过认证,不合法的用户拒绝连接。
(2)对通过认证的合法用户赋予相应的权限,用户可以在这些权限范围内对数据库做出相应的操作。
对身份的认证,My SQL是通过IP地址和用户名联合进行确认的,列入My SQL安装后默认创建的用户root@localhost表示用户root只能从本地(localhost)进行连接才可以通过认证,此用户从其他任何主机对数据库进行的连接都将被拒绝。也就是说,同样的一个用户名,如果来自不同的IP地址,则My SQL将其视为不同的用户名。
My SQL的权限表在数据库启动是的时候就载入内存,当用户通过身份验证后,就在内存中进行相应权限的存取,这样,此用户就可以在数据库中做权限范围内的各种操作了。
My SQL的用户信息存储在MYSQL 自带的mysql数据库的user表中。如果创建一个新的用户就叫做SQL用户,接下来就可以给这个用户设置一定的权限,这样一来就能更好地适应现实生活中的实际需求,以免出现权限分配不清。
2. Mysql账户权限安全
mysql中存在4个控制权限的表,分别为
1. mysql.USER表
2. mysql.DB表
3. mysql.TABLES_PRIV表
4. mysql.COLUMNS_PRIV表
要注意的是,Mysql中有一个数据库"information_schema",里面保存的也是一些权限信息,这个数据库"information_schema"是为系统管理员提供元数据的一个简便方式,它实际上是一个视图,可以理解为对Mysql中的一个信息的封装,对于Mysql主程序来说,身份认证和授权的信息的来源只有一个,就是"mysql"。
在我们进行数据库连接、登录的时候,mysql权限表的验证过程为:
(1)先从user表中的:
1) Host
2) User
3) Password
这3个字段中判断连接的ip、用户名、密码是否存在,存在则通过验证。
(2) 通过身份认证后,进行权限分配,按照:
1) user
2) db
3) tables_priv
4) columns_priv
的顺序进行验证。