Chinaunix首页 | 论坛 | 博客
  • 博客访问: 293402
  • 博文数量: 47
  • 博客积分: 1667
  • 博客等级: 上尉
  • 技术积分: 686
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-06 16:20
文章分类

全部博文(47)

文章存档

2013年(20)

2012年(20)

2011年(7)

分类: LINUX

2013-05-06 10:43:10

mysql 权限控制


mysql 权限控制在逻辑上分成2个模块:
1,用户管理模块。
2,访问控制模块。






用户管理模块主要负责用户登录连接的基本控制。访问控制模块则针对进入mysql主机的用户所发出的命令进行权限控制。




mysql的权限系统的信息存储在mysql.user,mysql.db,mysql.host,mysql.tables_priv,mysql_columns_priv几个表中,因为mysql在监听的过程中,
需要提供大量的mysql的权限检测,所以mysql在启动的时候,将这几个表的信息载入到内存中,所以手工更新权限表以后,
需要使用flush privileges 重新加载权限表。也可以通过grant,revoke,drop user,create user 来直接操作权限,这样可以操作权限表并直接载入到内存。


mysql权限可以分为
全局级,针对整个mysql实例                    mysql.user
数据库级,针对实例中的单个数据库             mysql.db
表级,针对数据库的单个表                     mysql.tables_priv
列级,针对表中的列,                         mysql.columns_priv
存储引擎级,针对存储引擎。                   mysql.proc












另外mysql.host与其他的权限表不同,需要手动update,delete,insert 来修改数据表,而且单独的mysql.host是没有意思,必须和mysql.db配合使用才有意思,


tony@'localhost'
select  id from test.t1  where user = 'abc';
在mysql.user查找有 user=tony,host=localhost,但是全局权限没有通过,则会查找mysql.db表,
在mysql.db中没有查找没有权限,并且在db表中发现有db=test,user=tony,会尝试查找mysql.host有没有db=test,host='localhost',如果没有则
退出,如果有则再次查找mysql.db的select_priv列和mysql.host的select_priv为Y。如果则退出
然后在查找表级,和列级。






阅读(3141) | 评论(0) | 转发(0) |
0

上一篇:nginx + tomcat 集群

下一篇:初始化脚本

给主人留下些什么吧!~~