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 和其他相关语句来更改权限。