python - 使用 Python 使用公钥和 cx_Oracle 进行身份验证

标签 python oracle authentication public-key-encryption cx-oracle

我用 Google 搜索了一下,但没有找到任何实质性结果。是否可以使用基于 key 的身份验证使用 Python 连接到 Oracle 服务器?我的目标是能够自动执行我使用 Python 所做的一些报告,而无需在服务器的任何位置存储用户名/密码。

最佳答案

一个可能的解决方案是实现 Oracle Wallet。创建 Oracle Wallet 条目涉及:

  • 为所述实例建立的 tnsname 解析名称
  • 用户名和密码

示例:我正在使用的 Oracle sid 名为 ORCL,我必须连接的用户名为 my_user。在您的 tnsnames.ora 文件中,您已经有一个解析 ORCL 服务名称/sid 的条目,请使用完全相同的参数再创建一个:

#initial local name entry:
ORCL = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = my_ip)(PORT = 1528))) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ORCL)))

#create an additional local name entry:
ORCL_MY_USER = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = my_ip)(PORT = 1528))) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ORCL)))

新条目解析成功后,为ORCL_MY_USER 本地名称创建oracle wallet 条目。您将在 python 脚本中使用这个新的本地名称进行连接,而无需在其中提供或硬编码密码。

例子:

import cx_Oracle

db = cx_Oracle.connect("/@ORCL_MY_USER")

cursor = db.cursor()

r = cursor.execute("SELECT username, password, account_status, default_tablespace, temporary_tablespace from dba_users order by username")

for username, password, account_status, default_tablespace, temporary_tablespace in cursor:

    print username, '\t', password, '\t', account_status, '\t', default_tablespace, '\t', temporary_tablespace

关于python - 使用 Python 使用公钥和 cx_Oracle 进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10485145/

相关文章:

c# - 从 C# 使用 Odbc 调用 Oracle 包函数

jsf - Spring Security 登录后,我被重定向到 CSS/JS 资源而不是 HTML 页面

asp.net - 使用 ASP.NET.Identity 时将用户配置文件保留到 cookie 中

c# - 在C#中调用MySql函数来验证用户名和密码

Python 3 导入错误 : No module named 'ConfigParser'

python - Scrapy 检索文本编码不正确,希伯来语为\u0d5 等

python - 在 pexpect 中将输出显示到终端 - Python

python - 如何将复杂矩阵保存在文件中?

sql - 为什么这个序列增加了 2?

sql - SQL 中的字符串剪切