12.1.4 访问控制:MySQL如何使用grant表
MySQL使用grant表通过两个步骤来确定允许用户做什么:
1)连接验证。在这里,MySQL基于如上所示的user表中的信息检查用户是否有权连接数据库。这是基于用户名、主机名和密码进行的验证。如果用户名为空,它将匹配所有用户。主机名可以用通配符%指定。通配符%可以用作整个主机名(也就是说,“%”符号匹配所有的主机),或者用作主机名的一部分,例如,%.tangledweb.com.au匹配所有以.tangledweb.com.au结尾的主机。如果密码字段为空,则不要求密码。在主机名称中避免使用通配符,避免使用没有密码的用户名,避免空用户名,这样做会更安全。如果主机名为空,MySQL将引用host表,找到匹配的user和host对。
2)请求验证。当建立一个连接之后,对于所发送的每一个请求,MySQL都会检查是否有执行该请求的权限级别。系统首先将检查全局权限(在user表中),如果这些还不够,系统将再检查db表和host表。如果仍然没有足够的权限,MySQL将检查tables_priv表,如果权限还不够,最后将检查columns_priv表。