什么是mysql权限系统_mysql权限基本概念

来源:这里教程网 时间:2026-02-28 20:35:46 作者:

MySQL权限系统是一套基于身份验证与操作授权的访问控制机制,核心目标是确保只有被明确允许的用户,才能在指定范围内执行特定数据库操作。

用户身份由“用户名+主机名”共同决定

同一个用户名从不同主机连接,会被视为完全不同的账户。例如:

'appuser'@'192.168.10.5''appuser'@'localhost' 是两个独立账户 可以为它们设置不同密码、不同权限、甚至一个启用一个锁定 通配符 '%' 表示任意主机(不包括 localhost),若需覆盖本地连接,需额外显式创建 'user'@'localhost'

权限按作用范围分四个层级

权限不是笼统赋予的,而是严格绑定到具体作用域,从宽到细依次为:

全局层级(*.*):影响整个 MySQL 实例,如
CREATE USER
SHUTDOWN
RELOAD
数据库层级(db_name.*):仅对该数据库内所有对象生效,如
CREATE
DROP
ALTER
数据库或其中表
表层级(db_name.table_name):控制对某张表的
SELECT
INSERT
UPDATE
DELETE
等操作
列层级(db_name.table_name.column_name):精细到某列的读写,常用于敏感字段隔离(如身份证号、密码哈希)

权限存储与生效机制

所有权限规则都持久化保存在 mysql 系统库 的多张权限表中,包括:

user
:记录全局权限和账户属性(密码、过期、锁定状态)
db
:记录数据库级权限
tables_priv
columns_priv
:分别管理表级和列级权限
服务启动时一次性加载进内存,后续权限检查均基于内存副本进行 修改权限后无需重启,但执行
FLUSH PRIVILEGES
可强制重载(一般仅在直接更新权限表后需要)

权限类型分为管理类与操作类

并非所有权限都用于数据操作:

管理类权限:如
SUPER
REPLICATION CLIENT
PROCESS
,用于运维与系统控制
操作类权限:如
SELECT
INSERT
EXECUTE
(调用存储过程),面向业务逻辑
部分权限具有隐含继承性 —— 比如授予
CREATE
权限到某个数据库,也自动包含在该库中建表的能力;但不会自动获得建库本身权限,除非显式授予
CREATE DATABASE

相关推荐