浅析MySQL权限体系

手册/FAQ (413) 2016-03-31 15:33:46

MySQL的权限体系大致分为5个层级: 

 

全局层级: 
 

全局权限适用于一个给定服务器中的所有数据库。这些权限存储在mysql.user表中。GRANT ALL ON .和REVOKE ALL ON .只授予和撤销全局权限。 
 

数据库层级: 
 

数据库权限适用于一个给定数据库中的所有目标。这些权限存储在mysql.db表中。GRANT ALL ON db_name.和REVOKE ALL ON db_name.只授予和撤销数据库权限。 
 

表层级: 
 

表权限适用于一个给定表中的所有列。这些权限存储在mysql.talbes_priv表中。GRANT ALL ON db_name.tbl_name和REVOKE ALL ON db_name.tbl_name只授予和撤销表权限。 
 

列层级: 
 

列权限适用于一个给定表中的单一列。这些权限存储在mysql.columns_priv表中。当使用REVOKE时,您必须指定与被授权列相同的列。 
 

子程序层级: 
 

CREATE ROUTINE, ALTER ROUTINE, EXECUTE和GRANT权限适用于已存储的子程序。这些权限可以被授予为全局层级和数据库层级。而且,除了CREATE ROUTINE外,这些权限可以被授予为子程序层级,并存储在mysql.procs_priv表中。

 

这些权限信息存储在下面的系统表中: 
 

mysql.user 
mysql.db 
mysql.host 
mysql.table_priv 
mysql.column_priv 
mysql. procs_priv 
 

当用户连接进来,mysqld会通过上面的这些表对用户权限进行验证!

THE END