• 数据权限分为:库、表和字段三种级别
  • 管理权限主要是管理员要使用到的权限,包括:数据库创建,临时表创建、主从部署、进程管理等
  • 程序权限主要是触发器、存储过程、函数等权限

DDL(Data Definition Language):create,alter,drop,truncate - 表结构 DML(Data Manipulation Language):insert,update,delete - 表数据

常用的权限

  • ALTER : 修改表结构
  • CREATE : 创建数据库、表、索引
  • CREATE USER : 创建用户
  • CREATE VIEW : 创建视图
  • DELETE:删除表数据
  • INDEX: 在已经存在的表创建索引
  • INSERT: 插入数据
  • SELECT: 查询数据
  • UPDATE:更新数据库的权限
  • FILE: load file 或者 into file 操作的权限

Database Level

相比于系统权限 , 少了一些系统级别的权限 ,如

CREATE USER,FILE,PROCESS,RELOAD,REPLICATION CLIENT,REPLICATION SLAVE, SHOW DATABASES, SHUTDOWN

其他的都是一样的

grant all on test.* to test3,test4@'localhost' identified by 'test123';

Table Level

grant all on test.test1 to wolf@'%' identified by 'wolf@123';

查询用户的权限

show grants for kelly@'%';

创建一个用户 & 分配权限

CREATE USER 'anner'@'%' IDENTIFIED BY '1111';
 
# DML
GRANT SELECT, INSERT, UPDATE, DELETE ON *.* TO 'anner'@'%';
 
# DDL
GRANT CREATE, ALTER, DROP, INDEX ON *.* TO `anner`@`%`;
 
// 允许局域网连接 (1130, "192.168.65.1' is not allowed to connect to this MySQL server")
# 5版本
GRANT ALL PRIVILEGES ON *.* TO 'anner'@'%' IDENTIFIED BY '1111' WITH GRANT OPTION;
# 8 版本
GRANT ALL PRIVILEGES ON *.* TO 'anner'@'%' WITH GRANT OPTION;
 
FLUSH PRIVILEGES;

可以看到新建一个表会直接失败

MySQL bnner@10.211.55.4:tmp> CREATE TABLE test_table (
                          ->   id INT PRIMARY KEY,
                          ->   name VARCHAR(50)
                          -> );
(1142, "CREATE command denied to user 'bnner'@'10.211.55.2' for table 'test_table'")
MySQL bnner@10.211.55.4:tmp>
  • 复习 Mysql 账户权限控制 (@2024-01-27)