当客户端登陆成功,需要进一步对数据库进行操作时,需要检查是否具有相应的操作权限。
MySQL中有六张权限表:
1.user
登录验证、对所有数据库对象进行操作限制
2.db
针对指定的数据库对合法用户赋予权限
3.host
db的辅助表,用于对多台允许连接的主机赋予权限
4.table_priv、columns_priv
对数据库中指定表中和字段的权限进行定义
5.procs_priv
对某个单独的存储程序或函数进行权限管理。
////////////////////////////////////////////////////////////////
相关函数流程调用:
check_access()(sql_parse.cc),读取所有能使用的表所具有的全局权限和db权限。
check_table_access()(sql_parse.cc)
check_grant()(sql_acl.cc)
acl_get()(sql_acl.cc)