mysql通过“用户+主机”识别账户,权限存储在mysql系统表中,按全局、数据库、表、列、存储程序层级控制,支持select、INSERT、UPDATE等权限类型,使用GRANT、REVOKE等命令管理,遵循最小权限原则保障安全。

MySQL数据库权限控制是指通过系统内置的安全机制,对用户访问和操作数据库的行为进行限制和管理。它的核心目标是确保只有经过授权的用户才能执行特定的数据库操作,从而保护数据的完整性、机密性和可用性。
权限控制的基本原理
MySQL通过“用户+主机”的组合来识别每一个账户,例如 ‘root’@’localhost’ 和 ‘root’@’%’ 被视为两个不同的用户。权限信息存储在mysql数据库的多个系统表中,如user、db、tables_priv等。当用户发起连接或执行操作时,MySQL会逐级检查这些权限表,判断是否允许该行为。
权限分为多个层级,包括:
- 全局级别:适用于所有数据库,通过GRANT ALL ON *.*设置
- 数据库级别:针对某个具体数据库,使用GRANT SELECT ON db_name.*
- 表级别:精确到某张表,比如GRANT INSERT ON db_name.table1
- 列级别:可限制对某些字段的操作,如GRANT UPDATE (name) ON db_name.table1
- 存储程序级别:用于控制对函数、存储过程的执行权限
常见的权限类型
MySQL提供多种权限以满足不同场景需求:
- SELECT:查询数据
- INSERT:插入新记录
- UPDATE:修改已有数据
- delete:删除数据
- CREATE:创建数据库或表
- DROP:删除数据库或表
- ALTER:修改表结构
- INDEX:创建或删除索引
- GRANT OPTION:允许将权限授予其他用户
权限管理常用命令
管理员可以通过sql语句灵活管理权限:
- 创建用户:CREATE USER ‘username’@’host’ IDENTIFIED BY ‘password‘;
- 授予权限:GRANT SELECT, INSERT ON db_name.table TO ‘user’@’host’;
- 撤销权限:REVOKE DELETE ON *.* FROM ‘user’@’host’;
- 查看权限:SHOW GRANTS for ‘user’@’host’;
- 刷新权限:FLUSH PRIVILEGES;(使更改立即生效)
基本上就这些。合理配置权限既能保障系统安全,又能满足业务协作需求。注意最小权限原则——只给用户完成工作所需的最低权限,避免滥用高权限账号。