全部博文(710)
分类: Mysql/postgreSQL
2011-04-12 10:25:35
引入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中的对象做授权操作