在Oracle数据库中,以下哪项描述最准确地反映了PUBLIC的作用?
A
PUBLIC是预定义的角色,不能被修改或删除。
B
PUBLIC是一个特殊用户,拥有系统管理员权限。
C
PUBLIC可以被用来将对象权限或系统权限授予所有用户。
D
PUBLIC代表所有当前登录的用户。
C. PUBLIC可以被用来将对象权限或系统权限授予所有用户。
详细解析: PUBLIC的本质
PUBLIC是Oracle中一个特殊标识符,代表数据库中的所有用户(包括未来创建的用户)。它既不是预定义角色(dba_roles中无记录),也不是具体用户(dba_users中无记录),而是权限分配的“集合体”。 核心作用:全局授权
系统权限:通过GRANT <权限> TO PUBLIC可将权限(如CREATE SESSION)赋予所有用户。
对象权限:例如GRANT SELECT ON scott.emp TO PUBLIC,使所有用户可查询该表。
安全风险:Oracle官方建议谨慎授予系统权限给PUBLIC,避免权限滥用(如默认PUBLIC拥有EXECUTE权限可能被恶意利用)。 与其他选项的对比
A选项错误:PUBLIC不是角色(dba_roles查询为空),无法像角色一样被修改或删除。
B选项错误:PUBLIC没有默认管理员权限,仅作为权限分配的媒介。
D选项错误:PUBLIC代表所有用户(包括未登录的),而非仅当前登录用户。 实际应用与风险控制
禁用建议:安全实践中需定期检查并撤销PUBLIC的非必要权限(如REVOKE CREATE PROCEDURE FROM PUBLIC)。
权限继承:若授权时使用WITH GRANT OPTION,用户可进一步传递权限,但PUBLIC本身不支持此选项。
总结:
PUBLIC的核心功能是作为权限分配的全局容器,通过它可一次性向所有用户授予权限。但因其潜在安全风险,应严格遵循最小权限原则,避免过度授权。




