cx_Oracle提供ORA-01031特权不足,以SYSDBA身份登录

问题描述 投票:0回答:1

我正在尝试使用Python cx_Oracle连接Oracle远程数据库服务器。在sqlplus中,我确实使用“ sqlplus / as sysdba”使用腻子控制台连接服务器,我要成功登录。您能否对此提供帮助,为什么它会引发此错误。

import cx_Oracle
tns= cx_Oracle.makedsn('ip', port, SERVICE NAME = 'SID')   
db = cx_Oracle.connect('SYS', 'password', tns, mode=cx_Oracle.SYSDBA)

它抛出错误:

cx_Oracle Database Error ORA-01031: insufficient privileges 

我已经做过一个普通的数据库用户,并尝试与它建立连接,并且成功。

db = cx_Oracle.connect('USERNAME', 'password', tns)
python sql oracle11g oracle10g cx-oracle
1个回答
0
投票

您应该能够以普通的“ DBA”角色完成大部分(全部?)的事情。 SYSDBA通常仅在执行需要重新启动数据库,软件和补丁程序安装或具有备份/恢复方案的操作时才是必需的,并且在日常使用中性能异常强大。根据您的Oracle版本,它可以完全绕过许多安全功能,并且由于这个原因,在大多数脚本和应用程序中使用它通常是不安全的。使用应限于only SYSDBA可以做的事情。

[另外,可能不允许SYS用户通过网络连接(您正在使用TNS连接),因为它已通过服务器操作系统的身份验证,这意味着仅本地登录。这就是为什么登录到数据库服务器时“ sqlplus / as sysdba”起作用的原因。

请考虑以下内容:

  1. 如果您必须具有实际的SYSDBA特权,并且没有其他操作,请将SYSDBA角色授予另一个用户,然后使用该角色。正如@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@(的)的@@@@@@@@@@@@@@@@@@@@@的,建议使用从不使用SYS或SYSTEM帐户进行服务器上或远程的日常管理工作。
  2. 切勿在脚本或应用程序代码中嵌入用户名和密码,尤其是对于功能强大的帐户。改用Oracle Wallet来保存加密的用户凭证,或者更好地提示用户在运行时输入它们。将这样的凭据直接放入脚本中是确保安全审核失败的肯定方法。
  3. 遵循最小特权原则,除了需要那些特定特权(添加文件等)之外,请勿将启用了SYSDBA或DBA角色的帐户用于其他任何用途。尽可能使用较少的帐户。
  4. [通过网络使用具有DBA或SYSDBA特权的特权帐户时,应加密所有通信。

请参见这些链接以获取详细信息:

© www.soinside.com 2019 - 2024. All rights reserved.