一、权限管理
在 MySQL 数据库中,使用 grant 命令授权,revoke 命令撤销授权。语法如下:
代码语言:javascript复制# 授权
grant all privileges on databaseName.tableName to '用户名'[@'主机名']
# 撤销授权
revoke all privileges on databaseName.tableName from '用户名'[@'主机名']
# 刷新权限
FLUSH PRIVILEGES;
# 查看权限
show grant for '用户名'[@'主机名']
二、MySQL 权限列表
使用 grant 和 revoke 进行授权和撤销授权时,需要指定具体哪些权限,这些权限答题分为三类:数据列、结构类和管理类。
数据 | 结构 | 管理 |
---|---|---|
SELECT | CRETAE | USAGE |
INSERT | ALTER | GRANT |
UPDATE | INDEX | SUPER |
DELETE | DROP | PROCESS |
FILE | CREATE TEMPORARY TABLES | SHUTDOWN |
SHOW VIEW | SHOW DATABASES | |
CREATE ROUTINE | LOCK TABLES | |
EXECUTE | REFERECES | |
CREATE VIEW | REPUCATION CUENT | |
EVENT | REPUCATION SLAVE | |
TRIGGER | CREATE USER |
例如:
- 查看 root 用户的权限
show grants for 'root'
- 将查询mydb数据库的权限授予zhangsan
grant select on mydb.* to 'zhangsan'@'%';
FLUSH PRIVILEGES;
TIP:
- 在授予或回收权限后需运行 FLUSH PRIVILEGES 语句来刷新;
- 如果授予某个用户访问所有数据库的所有表的权限的时候使用如下语法: ``sql grant all privileges on . to ‘用户名’[@‘主机名’]