MySQL服务器在启动时将授权表从mysql数据库读取到内存中,所有访问控制决策都将以这些表作为依据:
user:用户账户、角色和全局级别权限;
global_grants:动态权限;
db:数据库级别权限;
ables_priv:表级别权限;
columms-priv:列级别权限;
role_edges:授予用户和其他角色的角色;
procs_priv:存储过程和函数权限;
proxies_priv:代理用户权限;
default_roles:默认用户角色;
password_history:口令更改历史;
对全局权限和口令的更改仅应用于该账户的后续连接,当前现有的连接不起作用,对数据库级别权限的更改在客户机的下一条USE db_name语句后应用;对角色、表、列和例程权限的更改会立即应用。
授权表是在MySQL安装过程创建的,授权表使用lnnoDB存储引擎。MySQL会维护授权表在内存中副本以避免访问磁盘上表的开销,应避免直接在授权表中修改用户账户。
使用GRANT、REVOKE、SET PASSWORD和RENAME USER等账户修改语句会将更改应用于授权表及其内存中表