SQL Developer - 以DBA身份登录,但删除了priveleges

时间:2018-02-13 12:41:55

标签: oracle oracle-sqldeveloper

这两个权限不会被授予DBA:

  • SYSDBA
  • SYSOPER

SQL和GUI尝试授予这些权限会返回成功的消息,但它们仍然被撤销。以SYS身份登录时:

Signing in as SYS

Bookshop_DBA privileges appear as such

Granting with GUI

Granting with SQL

Result for both

返回消息表示授予成功但未进行任何更改。

2 个答案:

答案 0 :(得分:1)

请告诉我们您的实际行动。

如果你正在使用如图所示的对话框并遇到问题,你应该能够报告任何ORA错误。

例如:

enter image description here

您不必猜测SQL Developer实际上在做什么 - 单击编辑用户对话框的SQL页面。

enter image description here

在进一步讨论之前,请考虑:

  1. 您通常不应以SYSDBA身份登录 - 除非您需要实际关闭或更改数据库。不要使用它作为一个强大的PRIV来解决安全/授权问题
  2. 在将某人授予某人之前,您应该知道自己在做什么,甚至自己使用它。阅读文档,然后再次阅读。否则,这就是你如何对数据库做非常非常糟糕的事情。
  3. 从非特权用户运行此代码:

    -- SYSTEM PRIVILEGES
    GRANT SYSDBA TO "user" ;
    GRANT SYSOPER TO "user" ;
    
    Error starting at line : 6 in command -
    GRANT SYSDBA TO "user"
    Error report -
    ORA-01031: insufficient privileges
    01031. 00000 -  "insufficient privileges"
    *Cause:    An attempt was made to perform a database operation without
               the necessary privileges.
    *Action:   Ask your database administrator or designated security
               administrator to grant you the necessary privileges
    
    Error starting at line : 7 in command -
    GRANT SYSOPER TO "user"
    Error report -
    ORA-01031: insufficient privileges
    01031. 00000 -  "insufficient privileges"
    *Cause:    An attempt was made to perform a database operation without
               the necessary privileges.
    *Action:   Ask your database administrator or designated security
               administrator to grant you the necessary privileges
    

    那么,我们如何解决这个问题呢?

    您需要为执行授权的用户执行此操作 - 如果您要让他们执行此操作,您最好真正信任此用户...

    GRANT SYSDBA TO "*user*" WITH ADMIN OPTION;
    

    但是,那还不够。

    根据DOCS:

      

    因为SYSDBA和SYSOPER是最强大的数据库权限,   GRANT语句中未使用WITH ADMIN OPTION。那就是   被授予者不能依次授予SYSDBA或SYSOPER权限   另一个用户。只有当前以SYSDBA身份连接的用户才能授予或   撤消其他用户的SYSDBA或SYSOPER系统权限。这些   权限无法授予角色,因为角色可用   仅在数据库启动后。不要混淆SYSDBA和SYSOPER   具有操作系统角色的数据库权限。

    因此,在SQL Developer中,断开连接。

    更改您的连接属性:

    enter image description here

    既然您已经以SYSDBA身份连接,那么您可以做......危险的事情......就像给别人一样。

    PS - 不要将任何东西授予像HR那样的演示模式。并且在生产环境中没有这些演示模式,它们仅作为学习资源。

答案 1 :(得分:0)

可能是由于您与之相关的用户。 SYSDBA和SYSOPER privs只能由SYSDBA用户授予。