mysql库是什么?
MySQL库是MySQL服务器内置的一个特殊的数据库。它包含了用于管理和控制MySQL服务器的系统表和系统变量。MySQL库存储着数据库服务器和用户账户的权限信息,以及其他数据库服务器的系统配置信息。通过操作MySQL库,可以进行用户管理、权限管理、系统配置等操作。
储存用户信息和权限的表:
除去一些系统变量,我们可以关注有关于用户权限的四个表,它们分别是user,db,table_priv,column_peiv。
user表
user表被称为全局权限表,也就是说对数据库服务器中的所有数据库都有该权限。
user表中不仅记录了用户的权限,还记录了用户名及密码(有些版本可能会有不同),这也就意味着user表还承担着在登陆时核对用户名和密码的职责。
表中具体有下面的内容:
Host:存储用户账户允许登录的主机名或IP地址。
User:存储用户账户的用户名。
Password:存储用户账户的密码。
Select_priv:存储用户账户是否具有SELECT权限。
Insert_priv:存储用户账户是否具有INSERT权限。
Update_priv:存储用户账户是否具有UPDATE权限。
Delete_priv:存储用户账户是否具有DELETE权限。
Create_priv:存储用户账户是否具有CREATE权限。
Drop_priv:存储用户账户是否具有DROP权限。
Grant_priv:存储用户账户是否具有GRANT权限。
Revoke_priv:存储用户账户是否具有REVOKE权限。
db表
db表被我们称为数据库级别的权限表,其中的权限针对的是某一个数据库,权限内容与user中的权限内容相似:
Host:存储用户账户允许访问的主机名或IP地址。
Db:存储数据库名。
User:存储用户账户名。
Select_priv:存储用户账户是否具有SELECT权限。
Insert_priv:存储用户账户是否具有INSERT权限。
Update_priv:存储用户账户是否具有UPDATE权限。
Delete_priv:存储用户账户是否具有DELETE权限。
Create_priv:存储用户账户是否具有CREATE权限。
Drop_priv:存储用户账户是否具有DROP权限。
Grant_priv:存储用户账户是否具有GRANT权限。
Index_priv:存储用户账户是否具有索引权限。
Alter_priv:存储用户账户是否具有ALTER权限。
Create_tmp_table_priv:存储用户账户是否具有创建临时表的权限。
Lock_tables_priv:存储用户账户是否具有锁定表的权限。
Create_view_priv:存储用户账户是否具有创建视图的权限。
Show_view_priv:存储用户账户是否具有显示视图的权限。
Create_routine_priv:存储用户账户是否具有创建存储过程和函数的权限。
Alter_routine_priv:存储用户账户是否具有修改存储过程和函数的权限。
Execute_priv:存储用户账户是否具有执行存储过程的权限。
Event_priv:存储用户账户是否具有创建、修改和删除事件的权限。
Trigger_priv:存储用户账户是否具有创建、修改和删除触发器的权限。
tables_priv表
tables_priv表用于存储用户对表的权限信息。它记录了用户对数据库中表的表级别的权限:
Host:表示用户所属的主机名。
Db:表示数据库名。
User:表示用户名。
Table_name:表示表名。
Grantor:表示授予权限的用户。
Timestamp:表示权限修改的时间戳。
Table_priv:表示用户对表的权限信息,以逗号分隔,类似于SELECT,INSERT,UPDATE等。
column_priv表
column_priv表被我们称为字段表,决定了用户可以访问和操作哪些字段,表中的主要内容与user中的权限相似:
Host:存储列所属的表所在的主机名或IP地址。
Db:存储列所属的表所在的数据库名。
User:存储列所属的表所属的用户账户名。
Table_name:存储列所属的表名。
Column_name:存储列的名称。
Column_type:存储列的数据类型。
Column_key:存储列是否是主键,如果是则为PRI,否则为’'。
Extra:存储列的额外信息,如是否自增、默认值等。
Column_priv:存储列相关的权限信息。
运行规律:
从上面的叙述中我们可以了解到,每个表所记载的权限的范围(也被称为权限的高低)不同,在实际的操作过程中,计算机会优先访问user表,如果user表中的某一个权限为Y,则针对该权限不再需要访问其他表,如果为N,则访问下一级的表。