Oracle数据库中PUBLIC的准确定义是什么?它是角色、用户还是用户组?
Oracle数据库中PUBLIC的准确定义
核心定位:PUBLIC是Oracle内置的特殊角色
PUBLIC既不是用户,也不是所谓的“用户组”,它是Oracle预定义的一个内置角色,所有数据库用户会自动成为该角色的成员,无需手动执行授予操作。
针对你的问题逐一说明:
是角色还是用户?
明确是角色。它的核心作用是作为权限批量授予的载体——给PUBLIC授予的权限,会自动应用到所有数据库用户身上。是否拥有Schema?
没有。Oracle中Schema与用户是一一绑定的关系,只有用户账号才会对应专属Schema。PUBLIC作为角色,没有对应的用户身份,因此不存在属于它的Schema。能否在其中创建对象?
不能。因为没有专属Schema,自然无法在“PUBLIC的Schema”下创建表、视图等对象。不过需要注意:- 你可能会看到公共同义词(Public Synonym),它只是被授予了PUBLIC角色的访问权限,让所有用户都能通过同义词访问目标对象,但该同义词的实际归属仍是创建它的用户的Schema。比如执行
CREATE PUBLIC SYNONYM emp FOR scott.emp;,这个同义词的所有者还是scott,只是所有用户都能通过emp直接访问scott.emp表。
- 你可能会看到公共同义词(Public Synonym),它只是被授予了PUBLIC角色的访问权限,让所有用户都能通过同义词访问目标对象,但该同义词的实际归属仍是创建它的用户的Schema。比如执行
内容的提问来源于stack exchange,提问作者general46
相关产品推荐
相关产品推荐

