您现在的位置是:亿华云 > 应用开发

带您深入了解MySQL的权限管理

亿华云2025-10-03 02:25:50【应用开发】4人已围观

简介MySQL 的权限表在数据库启动的时候就载入内存,当用户通过身份认证后,就在内存中进行相应权限的存取,这样,此用户就可以在数据库中做权限范围内的各种操作了。一、权限表的存取在权限存取的两个过程中,系统

MySQL 的入解权限表在数据库启动的时候就载入内存,当用户通过身份认证后,权限就在内存中进行相应权限的管理存取,这样,入解此用户就可以在数据库中做权限范围内的权限各种操作了。

一、管理权限表的入解存取

在权限存取的两个过程中,系统会用到 “mysql” 数据库(安装 MySQL 时被创建,权限数据库名称叫“mysql”) 中 user、管理host 和 db 这3个最重要的入解权限表。

在这 3 个表中,权限最重要的管理表示 user 表,其次是入解 db 表,亿华云host 表在大多数情况下并不使用。权限

user 中的管理列主要分为 4 个部分:用户列、权限列、安全列和资源控制列。

通常用的最多的是用户列和权限列,其中权限列又分为普通权限和管理权限。普通权限用于数据库的操作,比如 select_priv、super_priv 等。

当用户进行连接时,权限表的存取过程有以下两个过程:

先从 user 表中的 host、user 和 password 这 3 个字段中判断连接的 IP、用户名、源码下载和密码是否存在于表中,如果存在,则通过身份验证,否则拒绝连接。 如果通过身份验证、则按照以下权限表的顺序得到数据库权限:user -> db -> tables_priv -> columns_priv。

在这几个权限表中,权限范围依次递减,全局权限覆盖局部权限。上面的***阶段好理解,下面以一个例子来详细解释一下第二阶段。

为了方便测试,需要修改变量 sql_mode

// sql_mode 默认值中有 NO_AUTO_CREATE_USER (防止GRANT自动创建新用户,除非还指定了密码) SET SESSION sql_mode=STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION;  

1. 创建用户 zj@localhost,并赋予所有数据库上的所有表的 select 权限

MySQL [mysql]> grant select on *.* to zj@localhost; Query OK, 0 rows affected, 2 warnings (0.00 sec) MySQL [mysql]> select * from user where user="zj" and host=localhost \G; 

很赞哦!(67)