赞
踩
「作者简介」:冬奥会网络安全中国代表队,CSDN Top100,就职奇安信多年,以实战工作为基础著作 《网络安全自学教程》,适合基础薄弱的同学系统化的学习网络安全,用最短的时间掌握最核心的技术。
这一章节我们需要知道MySQL的用户权限是如何划分的,怎么修改用户权限。
实际生产环境中,应按照软件安全设计的最小特权原则配置用户权限。
show grants for root@localhost;
select * from mysql.user where user='root'\G
grant select on *.* to test@localhost;
revoke select on *.* from test@localhost;
MySQL用户的权限分为5个级别:全局、库、表、字段、程序和函数。
mysql.user
表中,xx.priv字段表示具体的权限,Y表示有权限,N表示没权限。mysql.db
表中,xx.priv字段表示具体的权限,Y表示有权限,N表示没权限。mysql.priv
表中,xx.priv字段表示具体的权限,这里不再用YN表示,而是具体的Select、Delete这种。columns_priv
表中。procs_priv
表中。权限看起来很复杂,但实际分配权限时却很简单:
*.*
。database.*
。database.table
。database.table.column
。方式一:以权限设置记录的形式展示用户权限,多条权限配置可叠加生效。
show grants for root@localhost;
方式二:只看权限结果。\G
可以让每个字段显示为一行。
select * from mysql.user where user='root'\G
设置权限的语法格式:
grant select on *.* to test@localhost;
*.*
就是对 所有数据库.所有表
都生效。用户名@主机
删除权限的语法格式:
revoke select on *.* from test@localhost;
用户名@主机
创建一个新用户,可以发现,用户默认是 USAGE 没有权限。
create user test@localhost;
show grants for test@localhost;
登录进去可以发现,新用户连访问mysql库的权限都没有,也无法创建数据库。
quit
mysql -u test
show database;
我们切换root,给新用户加一个SELECT权限
quit
mysql -u root -p1234567
grant select on *.* to test@localhost;
show grants for test@localhost;
再登录新用户,就能查询所有数据库了。
quit
mysql -u test
show databases;
再切回root用户,取消新用户的 select,再次查看,可以看到,用户有回到USAGE没有权限的状态了。
quit
mysql -u root -p1234567
revoke select on *.* from test@localhost;
show grants for test@localhost;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。