授权语法
grant <权限1
>,<权限2
>,... on <数据库名称
>.<表名
> to 用户
@'<主机
>' [identified by '<密码
>'] [with grant option];
- 权限:MySQL 中的不同权限,如:CREATE、DROP、SELECT、UPDATE、INSERT 等。
- on:用来指定权限针对哪些库和表。
- 数据库名称:准备赋予权限的数据库,可以用
*
代替所有。 - 表名:指定数据库的指定表,可以用
*
代替所有。 - to:表示将权限赋予某个用户。
- 用户:被授权的用户。
- 主机:限制的主机,可以是IP、IP段、域名以及%,可以使用
%
代替所有。注意:有的版本可能不支持 % 从本地登录。 - 密码:设置授权用户的密码,可选。
- 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;
在对表
user
、db
、host
等做了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 用户
@'<主机
>';
文章评论
唯黄昏而思烛明,唯覆雪始念日暖,唯放手方知情真。今困苦而怀峥嵘,今飘零而涌乡愁,今孑然而徒唏嘘,唏嘘成愁。