赞
踩
1、全部权限:可以控制对所有数据库的访问权限,权限信息主要保存在系统表mysql.user中;
2、数据库级别权限:可以控制对指定数据库的访问权限,权限信息主要保存在系统表mysql.db中;
3、数据库对象级别权限:可以控制对指定数据库对象,比如表、存储过程或列的访问权限,权限信息主要保存在系统表mysql.xxx_priv中;
权限的优先级是:user > db > xxx_priv,也就是说如果user表中有权限就以user表的权限为准,如果user表没有权限再看db表的权限,如果db表有权限就以db表的权限为准,如果db表没有权限才看具体的xxx_priv表的权限。
权限 | 说明 |
---|---|
All、All Privileges | 全部数据库的所有权限 |
Usage | 是创建一个用户之后的默认权限,包括连接、登录权限。该权限不能被回收,即使使用REVOKE |
Select | 允许从表中查看数据,某些不查询表数据的select执行则不需要此权限,如Select 1+1, Select PI()+2;而且select权限在执行update/delete语句中含有where条件的情况下也是需要的 |
Insert | 允许在表里插入数据,同时在执行analyze table,optimize table,repair table,create user语句的时候也需要Insert权限 |
Update | 允许修改表中的数据的权限 |
Delete | 允许删除行数据的权限 |
Create | 允许创建数据库和表的权限 |
Drop | 允许删除数据库、表、视图的权限,包括truncate table命令 |
Reload | 允许执行flush命令,指明重新加载权限表到系统内存中,refresh命令代表关闭和重新开启日志文件并刷新所有的表 |
Shutdown | 允许关闭数据库实例,执行语句包括mysqladmin shutdown |
Process | 允许查看MySQL中的进程信息,比如执行show processlist, mysqladmin processlist, show engine等命令。默认每个用户都可以执行show processlist命令,但是只能查询本用户的进程 |
File | 允许在MySQL可以访问的目录进行读写磁盘文件操作,可使用的命令包括load data infile、select … into outfile、load file()函数 |
Grant | 允许此用户授权或者收回给其他用户授予的权限,重新赋给管理员的时候需要加上这个权限 |
Reference | 允许创建外键 |
Index | 允许创建和删除索引 |
Alter | 允许修改表结构的权限,但必须要有Create和Insert权限配合。如果是rename表名,则要求有Alter和Drop原表,Create和Insert新表的权限 |
Show databases | 允许通过执行show databases命令查看所有的数据库名 |
Super | 允许执行一系列数据库管理命令,包括kill强制关闭某个连接命令,change master to创建复制关系命令,以及create/alter/drop server等命令 |
Create temporary tables | 允许创建临时表的权限 |
Lock tables | 允许对拥有Select权限的表进行锁定或解锁,以防止其他链接对此表的读或写 |
Execute | 允许执行存储过程和函数的权限 |
Replication slave | 允许slave主机通过此用户连接master以便建立主从复制关系 |
Replication client | 允许执行show master status,show slave status,show binary logs命令 |
Create view | 允许创建视图的权限 |
Show view | 允许通过执行show create view命令查看视图创建的语句 |
Create routine | 允许创建存储过程、函数的权限,当授予此权限时会自动授予Execute和Alter routine权限 |
Alter routine | 允许修改或者删除存储过程、函数的权限 |
Create user | 允许创建、修改、删除、重命名user的权限 |
Event | 允许查询、创建、修改、删除MySQL事件 |
Trigger | 允许创建、删除、执行、显示触发器的权限 |
Create tablespace | 允许创建、修改、删除表空间和日志组的权限 |
Host字段用来限制允许从哪些IP请求连接数据库,localhost表示只能服务器本地连接。可以使用通配符%或_,%表示任意数量的字符,_表示单个字符。User字段用来指定哪些用户可以连接数据库,''表示任意用户。
1、查看指定用户的授权信息:
show grants for root@localhost;
2、查看指定用户的非授权信息:
show create user root@localhost;
3、创建授权用户:
create user 'user'@'localhost' identified by 'user@123' account lock;
4、删除授权用户:
drop user 'user'@'localhost';
5、修改指定授权用户密码有4种方式:
- alter user 'user'@'localhost' identified by 'user@123';
-
- set password for 'user'@'localhost' = PASSWORD('user@123');
-
- grant all privileges on dbname.tablename to 'user'@'localhost' identified by 'user123';
-
- mysqladmin -u user -h host_name password "user@123"
6、修改当前登录用户的密码:
- alter user USER() identified by 'user@123';
-
- set PASSWORD = PASSWORD('user@123');
7、设置授权用户密码过期策略:
- alter user 'user'@'localhost' PASSWORD EXPIRE INTERVAL 90 DAY; //90天过期
-
- alter user 'user'@'localhost' PASSWORD EXPIRE NEVER; //密码不过期
-
- alter user 'user'@'localhost' PASSWORD EXPIRE DEFAULT; //默认过期策略
-
- alter user 'user'@'localhost' PASSWORD EXPIRE; //强制用户密码过期
8、创建授权用户并给该用户指定数据库中的指定的表进行授权:
grant all privileges on dbname.tablename to 'user'@'localhost' identified by 'user123';
9、 给指定用户授权指定列的权限,该权限可以向下继续授予:
grant select(id) on dbname.tablename to 'user'@'localhost' with grant option;
10、 允许指定用户对指定数据库的表的权限可以向下继续授予:
grant grant option on dbname.tablename to 'user'@'localhost';
11、 收回指定用户的指定权限:
revoke select on dbname.tablename from 'user'@'localhost';
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。