权限层级
1:全局层级 适用于服务器中的所有数据库,权限存储在mysql.user表中
grant all on *.*
revoke all on *.*
2:数据库层级 适用于一个数据库中的所有对象,权限存储在mysql.db和host表中
grant all on db_name.*
revoke all on db_name.*
3:表层级 使用于一个表中的所有列,权限存储在mysql.tables.priv表中
grant all on db_name.table_name
revoke all on db_name.table_name
4:列层级 使用于一个表中的单个列,权限存储在mysql.columns.priv表中
5:子程序层级 CREATE ROUTINE, ALTER ROUTINE, EXECUTE和GRANT权限适用于已存储的子程序。这些权限可以被授予为全局层级和数据库层级。而且,除了CREATE ROUTINE外,这些权限可以被授予为子程序层级,并存储在mysql.procs_priv表中。
权限类型
select | 使用select语句查询表 |
insert | 使用insert语句向表中插入记录 |
update | 使用update语句更新记录 |
delete | 使用delete语句删除表中的记录 |
all[privileges] | 设置除grant option之外的所有简单权限 |
alter | 允许使用alter table修改表结构, 验证语句: alter table a.b modify id int; |
create | 允许使用create table语句创建表。验证语句:create table a.b(id int); |
create routine | 创建存储过程。 |
create temporary tables | 允许使用create temporary table。 |
create view | 允许使用create view。验证语句:CREATE VIEW b.v1 AS SELECT * FROM b.a; |
create user | 允许使用create user, drop user, rename user和revoke all privileges。 |
drop | 允许使用drop table |
execute | 允许用户运行存储过程。 |
file | 允许使用select...into outfile和load data infile。 |
index | 允许使用create index, drop index |
lock tables | 允许对拥有select权限的表使用lock tables。 |
process | 允许使用show full processlist。 |
reload | 允许使用flush。验证语句:flush privileges。 |
replication client | 允许用户询问从属服务器或主服务器的地址 |
replication slave | 用于复制型从属服务器(从主服务器中读取二进制日志事件) |
show databases | 允许使用show databases显示所有数据库 |
show view | 允许使用show create view |
shutdown | 允许使用mysqladmin shutdown |
grant option | 允许授予权限 |
#分配权限示例:
格式:grant <权限> on <数据库.表> to <用户名>@<访问位置> identified by '<密码>';
本机访问
grant all privileges on dbname.* to username@localhost identified by '1234';
172.19.12段ip访问
grant all privileges on dbname.* to username@172.19.12.% identified by '1234';
所有IP访问
grant all privileges on dbname.* to username@% identified by '1234';
给用户user1赋予在数据库db1上所有表的select, insert, delete, update权限
GRANT SELECT, INSERT, UPDATE, DELETE ON db1.* TO user1@localhost;
删除用户user1在数据库db1上所有表上的select, insert, delete, update权限
REVOKE SELECT, INSERT, UPDATE, DELETE ON b.* FROM a@localhost;
/*分配普通用户权限*/
GRANT SELECT, INSERT, UPDATE, DELETE ON b.* TO a@localhost;
/*分配管理用户权限*/
GRANT ALL ON b.* TO b@localhost;