权限区分
权限分为系统权限和用户权限,系统权限与用户权限的混淆总是让人无法准确使用grant语句,我这主要解释下两者。
系统权限
系统权限有100多种,这些权限涉及数据库对象创建、删除,如:创建了一个用户create user,在用户方案(schema)中创建表、视图、序列等方案对象,这些操作需要的都是系统权限。
看看语句grant privliege to [user|role|public],适用这个格式的权限便是系统权限,通个这个可以知道系统权限只会是creat、drop等操作需要的权限。
用户权限
用户权限是对用户方案(schema)包含的对象表、视图、序列或过程进行特定操作的权限,如:用户有方案对象table,对表select、insert、update、delete、alter时需要的权限就是用户权限。
看看语句grant privliege on object_name to [user|role|public],这个格式的语句便是用户权限,通个这个可以知道用户权限只会是select、alter等对具体对象进行操作需要的权限。。
总结
比较 grant privliege to [user|role|public] 和grant privliege on object_name to [user|role|public],可以明显发现 on字句是两者的又一区别,你不可能select时不用on指定table对象,而你create table时不会加上on去指定给那个具体对象,这肯定不对。