mysql的用户权限总结
1、USAGE:连接(登录)权限,建立一个用户,就会自动授予其usage权限(默认授予)。该权限只能用于数据库登录,不能执行任何操作,且该权限不能被回收,即使使用REVOKE也不能删除用户权限。grantusageon*.*to 'user'@'localhost'identifiedby 'user123';2、SELECT:使用SELECT查看表内容的权限,拥...
一、权限级别 :
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';
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)