MySQL有关权限的表 ?
参考答案:
MySQL 的权限系统涉及多个表,这些表都存储在 mysql
数据库中。以下是与 MySQL 权限相关的几个主要表:
-
user
- 描述:存储了所有用户的全局权限。
- 主要列:
Host
,User
,Password
,Select_priv
,Insert_priv
,Update_priv
, ... 等。
-
db
- 描述:存储了针对特定数据库的权限。
- 主要列:
Host
,Db
,User
,Select_priv
,Insert_priv
,Update_priv
, ... 等。
-
tables_priv
- 描述:存储了针对特定表的权限。
- 主要列:
Host
,Db
,User
,Table_name
,Select_priv
,Insert_priv
,Update_priv
, ... 等。
-
columns_priv
- 描述:存储了针对特定表的特定列的权限。
- 主要列:
Host
,Db
,User
,Table_name
,Column_name
,Select_priv
,Insert_priv
,Update_priv
, ... 等。
-
procs_priv
- 描述:存储了针对存储过程和函数的权限。
- 主要列:
Host
,Db
,User
,Routine_name
,Routine_type
,Execute_priv
等。
-
proxies_priv
- 描述:存储了代理用户权限,即哪些用户可以代理为其他用户执行操作。
- 主要列:
Host
,User
,Proxied_host
,Proxied_user
。
-
global_privs
- 描述:这是一个内部表,用于存储全局权限的缓存。
- 注意:此表通常由 MySQL 内部使用,不应直接修改。
-
db_privs
- 描述:这是一个内部表,用于存储数据库权限的缓存。
- 注意:此表通常由 MySQL 内部使用,不应直接修改。
-
tables_privs
- 描述:这是一个内部表,用于存储表权限的缓存。
- 注意:此表通常由 MySQL 内部使用,不应直接修改。
-
columns_privs
- 描述:这是一个内部表,用于存储列权限的缓存。
- 注意:此表通常由 MySQL 内部使用,不应直接修改。
当你更改 MySQL 的权限时(例如,使用 GRANT
或 REVOKE
语句),这些更改实际上会反映在上述表中。但是,MySQL 也提供了一个权限缓存机制,这意味着在内存中也会有权限的副本。因此,在某些情况下,可能需要执行 FLUSH PRIVILEGES;
来清除缓存并确保权限更改立即生效。
请注意,直接修改这些表是不推荐的,因为可能会导致权限系统的混乱或不一致。始终使用 GRANT
、REVOKE
和其他相关语句来更改权限。