MySQL 权限管理

授权语法

grant <权限1>,<权限2>,… on <数据库名称>.<表名> to 用户@'<主机>' [identified by '<密码>'] [with grant option];

  1. 权限:MySQL 中的不同权限,如:CREATE、DROP、SELECT、UPDATE、INSERT 等。
  2. on:用来指定权限针对哪些库和表。
  3. 数据库名称:准备赋予权限的数据库,可以用*代替所有。
  4. 表名:指定数据库的指定表,可以用*代替所有。
  5. to:表示将权限赋予某个用户。
  6. 用户:被授权的用户。
  7. 主机:限制的主机,可以是IP、IP段、域名以及%,可以使用%代替所有。注意:有的版本可能不支持 % 从本地登录。
  8. 密码:设置授权用户的密码,可选。
  9. with grant option:表示该用户可以将自己拥有的权限授权给别人。

权限说明

权限 权限级别 说明
ALL PRIVILEGES ALL ALL,所有权限
CREATE 数据库、表或索引 创建数据库、表或索引权限
DROP 数据库或表 删除数据库或表权限
GRANT OPTION 数据库、表或保存的程序 赋予权限选项
REFERENCES 数据库或表 建立外键关系权限
ALTER 更改表,比如添加字段、索引等
DELETE 删除数据权限
INDEX 索引权限
INSERT 插入权限
SELECT 查询权限
UPDATE 更新权限
CREATE VIEW 视图 创建视图权限
SHOW VIEW 视图 查看视图权限
ALTER ROUTINE 存储过程 更改存储过程权限
CREATE ROUTINE 存储过程 创建存储过程权限
EXECUTE 存储过程 执行存储过程权限
FILE 服务器主机上的文件访问 文件访问权限
CREATE TEMPORARY TABLES 服务器管理 创建临时表权限
LOCK TABLES 服务器管理 锁表权限
CREATE USER 服务器管理 创建用户权限
PROCESS 服务器管理 查看进程权限
RELOAD 服务器管理 执行flush-hosts, flush-logs, flush-privileges, flush-status, flush-tables, flush-threads, refresh, reload等命令的权限
REPLICATION CLIENT 服务器管理 复制权限
REPLICATION SLAVE 服务器管理 复制权限
SHOW DATABASES 服务器管理 查看数据库权限
SHUTDOWN 服务器管理 关闭数据库权限
SUPER 服务器管理 执行kill线程权限

  举例 1:授权用户 zhagnsan 通过 localhost 方式登录数据库,拥有对数据库 db1 的所有权限

grant all privileges on db1.* to zhangsan@'localhost' identified by "zhagnsan" with grant option;

在对表 userdbhost 等做了 update 或者 delete 更新的时候。记得使用 flush privileges; 命令进行刷新权限。

权限分布

权限分布 可能的设置的权限
表权限 'Select', 'Insert', 'Update', 'Delete', 'Create', 'Drop', 'Grant', 'References', 'Index', 'Alter'
列权限 'Select', 'Insert', 'Update', 'References'
过程权限 'Execute', 'Alter Routine', 'Grant'

记得定期清理不需要的用户。回收权限或者删除用户。

权限相关其他常用命令

# 查看当前用户的权限
show grants;
# 查看某个用户的权限
show grants for 'zhangsan'@'%';

撤回权限

revoke <权限1>,<权限2>,… on <数据库名称>.<表名> from 用户@'<主机>';

在 “MySQL 权限管理” 上有 1 条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注