通过grant和revoke可以在几个层次上控制访问权限
1,全局层级:整个服务器,使用 grant ALL 和revoke ALL
2,数据库层级:整个数据库,使用on database.*
3,表层级:特点表,使用on database.table
4,列层级:特定的列
5,子程序层级:特定的存储过程
权限管理:
一、权限
命令标识 授权表中对应的列 说明
CREATE Create_priv 创建数据库、表或索引
CREATE TEMPORARY TABLES Create_tmp_table_priv 创建临时数据表
CREATE ROUTINE Create_routine_priv 创建函数或存储
CREATE VIEW Create_view_priv 创建视图
CREATE USER Create_user_priv 创建用户
EXECUTE Execute_priv 执行函数或存储过程
INDEX Index_priv 建立索引
REFERENCES References_priv 建立约束
DROP Drop_priv 删除表
SELECT Select_priv 查询数据
INSERT Insert_priv 插入数据
UPDATE Update_priv 更新数据
DELETE Delete_priv 删除数据
LOCK TABLES Lock_tables_priv 锁定表格
SHOW DATABASES Show_db_priv 列出数据库
SHOW VIEW Show_view_priv 列出视图
USAGE 只有登录权限,其他权限都没有
ALL 所有权限,除了WITH GRANT OPTION
ALTER Alter_priv 更改数据表
ALTER ROUTINE Alter_routine_priv 更改函数或存储过程
PROCESS Process_priv 显示连接进程和中断连接进程
FILE File_priv 载入文件
RELOAD Reload_priv 可以用FLUSH
REPLICATION CLIENT Repl_client_priv 可以检查Masters和Slaves
REPLICATION SLAVE Repl_slave_priv 在Slave里的特殊权限
SHUTDOWN Shutdown_priv 关闭MySQL
WITH GRANT OPTION Grant_priv 可以将自己拥有的权限赋给其他用户
SUPER Super_priv 执行kill线程,change master、purge master logs、set global等命令的权限
create tablespace Create_tablespace_priv 创建表空间
Event Event_priv 确定用户能否创建、修改和删除事件
Trigger Trigger_priv 确定用户能否创建和删除触发器
我们可以看下root的权限是怎么样的
show grants for root;
1、那么我们来创建一个账号test,授予全局层级的权限
grant select,insert on *.* to test@'%' identified by 'test';
flush privileges;
2、那么我们来创建一个账号test,授予数据库层级的权限
grant select,insert,update,delete on wangzhan.* to test@'%' identified by 'test';
可以看到现在只有对名为wangzhan的数据库具有操作
其他级别的设置也差不多一样…
撤销权限用法:revoke 权限 on 数据库.* from 用户名@“客户端地址”;
比如撤销所有权限:revoke all on *.* from test@'%';
比如撤销单独file权限 限制着你能否把文件导入grant file on *.* to test;