我遇到了一些用户错误地创build了公共同义词的问题,这些问题导致了人们认为某些对象实际上处于另一个架构中时,它们处于同一个架构中。 每个人都知道他们应该使用私人同义词,但偶尔他们会忘记,或者他们犯了一个错误,有人被烧毁。 是否有可能授予用户创build私人同义词的权限,但不允许公开的同义词?
为了创build公共同义词,您必须具有CREATE PUBLIC SYNONYM特权。 要在自己的模式中创build同义词,您必须具有CREATE SYNONYM权限。 所以,要做你想做的,使用:
GRANT CREATE SYNONYM TO the_user;
如果用户具有CREATE PUBLIC SYNONYM特权,则可以撤消它:
REVOKE CREATE PUBLIC SYNONYM FROM the_user;