Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3215336
  • 博文数量: 710
  • 博客积分: 14546
  • 博客等级: 上将
  • 技术积分: 6738
  • 用 户 组: 普通用户
  • 注册时间: 2007-03-30 10:20
文章分类

全部博文(710)

文章存档

2016年(1)

2014年(7)

2013年(22)

2012年(227)

2011年(322)

2009年(119)

2008年(12)

分类:

2011-04-10 11:33:03

引入http://space.itpub.net/7607759/viewspace-688853

mysql权限验证类别
1.能不能连接?
2.能不能操作?

mysql权限验证粒度
一、全局权限
    拥有mysql服务器下所有数据库的所有对象的所有权限,权限信息存放在mysql.user表,新建用户默认拥有登录权限及访问test和test_%库权限,查询mysql.user获取已授予权限或通过show grants命令获取。针对mysql服务器中所有数据库的所有对象
    mysql>desc mysql.user

二、
1)数据库级权限
    拥有指定数据库中所有对象所有权限,权限信息记录mysql.db表,针对mysql服务器中的某个数据库
    mysql>desc mysql.db
2)来访主机权限
    针对mysql服务器中的某个数据库mysql.host,针对来访主机

三、
1)表对象权限
    拥有指定表对象的所有权限,针对数据库中表的对象
    mysql>desc mysql.tables_priv
   
2)表列权限
    mysql权限体系中标对象的最细粒度,拥有指定表对象的指定列的所有权限,记录在mysql.columns_priv,mysql.tables_priv,针对表中的具体列
    mysql>desc mysql.columns_priv
   
3)过程权限
    特指procedure,function两类对象,拥有指定对象的所有权限,权限信息记入mysql.procs_priv,针对程序的权限(含procedure,function)
    mysql>desc mysql.proc_priv


总结
mysql.user表决定是否允许或拒绝客户端的连接请求,对于允许的连接,user表授予的权限之处用户的全局权限,这些权限适用于服务器上所有数据库。
mysql.db表方位列决定用户能从哪台主机存取哪个数据库,权限列决定允许哪个操作,授予的数据库界别的权限适用于数据库和他的表。
tables_priv和columns_priv提供对象级细粒度权限。
usr/db/host几个字典表中,host,column_name值的对大小写不敏感,user,password,db,table_name值对大小写敏感。

权限的授予语法
GRANT priv_type [column_list] ON [object_type] priv_level TO user [identified by [password] 'password'][,user[identified by [password] 'password']] ……
[REQUIRE {none | ssl_option [[AND] ssl_option] ……} ]
[WITH with_option]
示例
grant all on jssdb.* to jss@'192.168.1.%';
grant select (id) on jssdb.t1  to jss@'192.168.1.%';
手动方式授予权限: insert/update 权限表。

收回命令语法
1.REVOKE priv_type [(column_list)][,priv_type [(column_list)]] ON [object_type] priv_level FROM user[,user]……
2.REVOKE ALL PRIVILEGES,GRANT OPTION FROM user [,user]……

查看用户被授予的权限
show grants for [user];

示例
revoke all from jss@'192.168.1.%';
revoke all on jssdb.* from jss@'192.168.1.%';

授权表何时被重新加载
1.grant,revoke,set,password,rename,user等系统命令会立即出发系统重新加载授权表
2.手动修改权限相关的字典表方式(insert,update,delete)并不会重新加载授权表,除非重启mysql服务。或者DBA手动执行命令加载授权表。

授权表被重新加载后何时生效
1.全局权限,对已连接的客户端无效,下次连接生效(含用户密码修改)。
2.数据权限,将在客户端执行user db_name生效。
3.表列及过程级权限,将在客户端下次执行操作时生效。

mysql中2个特殊的数据库
一、test数据库
默认创建
默认所有用户均有操作权限
存在一定安全隐患
"test_"开头数据库均有上述特点
二、information_schema数据库
虚拟对象,由mysql自动维护
所有用户能够登录到mysql的用户均有该库的读取权限
无法为information_schema中的对象做授权操作

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

上一篇:mysql工具

下一篇:高调运维

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