1、MySQL用户及权限管理
1.查询当前用户权限:
show grants:
show 是用于获取各种信息的关键字,比如库、表、用户、权限等而show grants则是用于获取当前用户的权限的
2.查询指定用户的权限
show grants for root@localhost;
show grants for root@localhost;这里使用了for指定查询了root用户 而@localhost的表示用户的主机名部分,它指定了用户可以从那个主机连接到MySQL服务器
3.创建用户,授予数据库查询权限
create user lop@localhost
identified by "123456";
create 是用于创建各种信息的关键字 加上user则表示创建用户 lop@localhost 就表示用户名和主机名 identified by "123456"则是指定用户的密码
4.查看lop@localhost的权限
show grants for lop@localhost;
5.使用select查询mysql.user表查看用户的全局权限
select * from mysql.user where user='lop'\g
select * from是用于查询所有信息的,mysql.user指的是mysql库下的user表 where是条件筛选 user='lop'是我给的条件只有满足条件的才会被查询出来 \g使查询到的每列打印到单独的行,也有;的作用 mysql.user表存放的是用户名、密码、来源主机,同时野村分类用户的全局权限
2、授予用户权限
1.grant 授予权限
在授予用户权限之前我们先了解insert(插入)delete(删除)update(更新)select(查询)这四种权限,如果我们的用户想要执行对应的操作就需要相应的权限
grant insert on databasess.* t0 lop@localhost;
这是为用户添加对于databasess库下所有表的insert权限
grant delete on databasess.* t0 lop@localhost;
这是为用户添加对于databasess库下所有表的delete权限 其他权限同理
2.mysql中用户的权限
权限类型 | 权限说明 |
---|---|
All/All Privileges | 代表全局或者全数据库对象级别的所有权限 |
Alter | 代表允许修改表结构的权限,但必须要求有create和insert权限配合。如果是rename表名,则要求有alter和drop原表, create和insert新表的权限 |
Alter routine | 代表允许修改或者删除存储过程、函数的权限 |
Create | 代表允许创建新的数据库和表的权限 |
Create routine | 代表允许创建存储过程、函数的权限 |
Create tablespace | 代表允许创建、修改、删除表空间和日志组的权限 |
Create temporary tables | 代表允许创建临时表的权限 |
Create user | 代表允许创建、修改、删除、重命名user的权限 |
Create view | 代表允许创建视图的权限 |
Delete | 允许执行delete操作 |
Drop | 代表允许删除数据库、表、视图的权限,包括truncate table命令 |
Event | 代表允许查询,创建,修改,删除MySQL事件 |
Execute | 代表允许执行存储过程和函数的权限 |
File | 代表允许在MySQL可以访问的目录进行读写磁盘文件操作,可使用的命令包括load data infile,select … into outfile,load file()函数 |
Grant option | 代表是否允许此用户授权或者收回给其他用户你给予的权限,重新付给管理员的时候需要加上这个权限 |
Index | 代表是否允许创建和删除索引 |
Insert | 代表是否允许在表里插入数据,同时在执行analyze table,optimize table,repair table语句的时候也需要insert权限 |
Lock tables | 代表允许对拥有select权限的表进行锁定,以防止其他链接对此表的读或写 |
Process | 代表允许查看MySQL中的进程信息,比如执行show processlist, mysqladmin processlist, show engine等命令 |
Reference | 是在5.7.6版本之后引入,代表是否允许创建外键 |
Reload | 代表允许执行flush命令,指明重新加载权限表到系统内存中,refresh命令代表关闭和重新开启日志文件并刷新所有的表 |
Replication client | 代表允许执行show master status,show slave status,show binary logs命令 |
Replication slave | 代表允许slave主机通过此用户连接master以便建立主从复制关系 |
Select | 允许执行select操作 |
Show databases | 代表允许执行show databases命令查看所有的数据库名 |
Show view | 代表允许执行show create view命令查看视图创建的语句 |
Shutdown | 代表允许关闭数据库实例,执行语句包括mysqladmin shutdown |
Super | 代表允许执行一系列数据库管理命令,包括kill强制关闭某个连接命令, change master to创建复制关系命令,以及create/alter/drop server等命令 |
Trigger | 代表允许创建,删除,执行,显示触发器的权限 |
Update | 允许执行update操作 |
Usage | 是创建一个用户之后的默认权限,其本身代表连接登录权限。使用create user语句创建的用户,默认就拥有这个usage权限,但是除了能登录之外, |
3、收回用户权限
1.撤销指定权限
撤销lop对databasess库中所有表的insert和delete权限
revoke insert,delete on databasess.* from lop@localhost;
2.撤销对表的全部权限
revoke all privileges on test.* from lop@localhost;
或 privileges就不在此解释了如果感兴趣可以自行查阅
revoke all on test.* from lop@localhost;
注意!usage权限是用户一经创建就有的,无法使用revoke命令撤销权限
3.撤销用户对所有的权限(除usage)
revoke all ,grant option from lop@localhost;