背景简介

很多企业上的数据库是使用Kerberos授权的无明文密码数据库。这种把普通Oracle数据库转化为由Kerberos授权的Oracle数据库的过程叫做Kerberize,也可以说是Kerberos化

如果你恰好使用Django作为后端框架,并且想要配置这种数据库的话,应该具体怎么设置呢?网上很少有这样的资源,这里分享一下我的项目配置中的经验。

环境/软件版本&配置:

  • Django: 3.2
  • cx_Oracle: 8.1.0
  • OS: Windows

具体过程

这份官方文档包含了一些Oracle的配置信息,可能对理解以下过程有帮助

  1. 前提:你已经安装好了Django和与之版本匹配的cx_Oracle
  2. 按照Django官方文档配置settings.py
    DATABASES = {'default': {'ENGINE': 'django.db.backends.oracle',# 当然下面这里你需要替换成你自己的Data Source Name(DSN)'NAME': '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=orclpdb1)))'  # 不需要额外的PORT,HOST等等的键值对,因为DSN已经包含了这些信息}
    }
    
  3. manage.py中添加环境变量
    # PATH_TO_YOUR_CONFIG_DIR: 是你的配置(config)文件夹,没有固定文件夹,你可以自定义一个
    os.environ.setdefault('TNS_ADMIN', 'PATH_TO_YOUR_CONFIG_DIR')
    

    注意:TNS_ADMIN这个环境变量可以不用从这里加入,只要你能确定这个变量出现在系统的环境变量里就可以了。比如你可以用Powershellset TNS_ADMIN=PATH_TO_YOUR_CONFIG_DIR也应该没问题。可以用print('TNS_ADMIN' in os.environ)检查是否你的Django项目里面包含这个环境变量。

  4. PATH_TO_YOUR_CONFIG_DIR这个文件夹中确保有一个名为sqlnet.ora的文件,其内容如下
    SQLNET.AUTHENTICATION_KERBEROS5_SERVICE=ORACLE
    SQLNET.AUTHENTICATION_SERVICES=KERBEROS5
    SQLNET.KERBEROS5_CC_NAME=PATH_TO_YOUR_CREDENTIAL_CACHE
    SQLNET.KERBEROS5_CONF=PATH_TO_YOUR_krb5.conf
    SQLNET.KERBEROS5_CONF_MIT=TRUE
    

    注意第3、4行需要自定义,其他照抄就行了。第三行是你的授权缓存Credential Cache的文件路径,第四行是你krb5.conf文件的路径。

  5. kinit获取新的Ticket Granting Ticket(TGT)
    kinit -k -t PATH_TO_YOUR_KEYTAB PRINCIPAL@REALM
    
  6. 一切就绪后就可以启动Django服务器了,如果一起配置没问题的话,开发服务器就起来了。
    python manage.py runserver
    

    这边只是个例子,确保你用的是正确的python路径和manage.py路径。

结语

如果你有用常规方式(比如bash或者纯Python)配置并且连接Kerberized Oracle,那这个过程对你来说可能并不复杂。如果Django配置不成功的话,可以从更简单的过程开始。我建议你使用纯Python先连接一次,具体可以看这个文档。一步一步来,从简单到复杂,会更容易一些,也便于理解整个过程。

工作笔记:如何用Django连接Kerberized甲骨文(Oracle)数据库相关推荐

  1. 如何用PLSQL连接服务器的Oracle数据库

    由于ORACLE比较庞大,安装也稍有点麻烦.我们平时不需要每台电脑都安装ORACLE,只需要在服务器安装ORACLE就可以了,然后使用PLSQL远程链接,但是需要ORACLE的一些配置文件的支持,我们 ...

  2. Django连接使用SQL Server数据库(windows版)

    2019独角兽企业重金招聘Python工程师标准>>> 前言: 众所周知,Django 默认支持sqlite,mysql,oracle,postgresql数据库,不支持SQL Se ...

  3. linux数据库创建表空间语句,如何用LINUX用命令创建ORACLE数据库表空间和用户

    如何用LINUX用命令创建ORACLE数据库表空间和用户 文本模式下如何建 更新时间:2019-06-21 19:36 最满意答案 先su 到 oracle用户,SYS用户以DBA身份登陆 //创建临 ...

  4. 无需编程,基于甲骨文oracle数据库零代码生成CRUD增删改查RESTful API接口

    无需编程,基于甲骨文oracle数据库零代码生成CRUD增删改查RESTful API接口 回顾 通过之前一篇文章 无需编程,基于PostgreSQL零代码生成CRUD增删改查RESTful API接 ...

  5. jdbc链接mysql按照id查询_使用jdbc连接并操作Oracle数据库(增删改查IDUS)

    使用jdbc连接并操作Oracle数据库(增删改查IDUS) [oracle@zaibei-db ~]$ sqlplus /nolog SQL*Plus: Release 11.2.0.4.0 Pro ...

  6. PLSQL无法连接64位Oracle数据库/Database下拉框为空的解决方法

    PLSQL无法连接64位Oracle数据库/Database下拉框为空的解决方法 参考文章: (1)PLSQL无法连接64位Oracle数据库/Database下拉框为空的解决方法 (2)https: ...

  7. jsp mysql oracle_Jsp 连接 mySQL、Oracle 数据库备忘

    Jsp 连接 mySQL.Oracle 数据库备忘 2009-12-15 16:47 Jsp 环境目前最流行的是 Tomcat5.0.Tomcat5.0 自己包含一个 Web 服务器,如果是测试,就没 ...

  8. Django web框架-----Django连接本地现有mysql数据库

    第一步:win10下载mysql5.7压缩包配置安装mysql,创建数据库或导入数据库 第二步:win10搭建django2.1.7开发环境,创建项目为mytestsite,创建应用app为quick ...

  9. php如何连接数据库 甲骨文,Windows PHP/phpStudy 连接 甲骨文Oracle 数据库 oci8 – 让我们荡起双桨的博客 – CSDN博客...

    好多好多年前,我也玩过一次PHP连接Oracle数据库,因为Oracle不是大众民用所以使用到的概率也很低.今天难得遇到了一个配置的机会,就要试试咯. 一般我们开启扩展支持,只需要在php.ini中打 ...

最新文章

  1. ピエタ~幸せの青い鳥~相关
  2. 使用httpClient发送get\post请求
  3. 词袋模型(bag of words)构建并使用主题模型(topic models)特征进行文本聚类分析(clustering analysis)实战
  4. springmvc和tomcat原理
  5. 数据结构——折半查找
  6. centos mysql root_CentOS下MySQL忘记root密码解决方法
  7. qn模块java脚本_BAT批处理实现自动安装软件功能
  8. Ubuntu NFS搭建过程
  9. windows平台编译vlc
  10. 浅谈SpringMVC之DispatcherServlet
  11. Pytorch损失函数BCELoss,BCEWithLogitsLoss
  12. 计算机读法综艺中文翻译英语,汉语综艺节目英译字幕组现状初探
  13. 计算机四级 网络工程师 考过指南
  14. 壮观性能服务器图片介绍,配至强7500 图解惠普ProLiant DL980 G7
  15. 《剑指Offer》51. 二叉搜索树的第k个结点
  16. python openpyxl删除excel特定行数据遇到的问题
  17. 2021-2027全球与中国便携式X射线荧光光谱仪市场现状及未来发展趋势
  18. Ue4 UI优化文档整理理解
  19. php 网页内容下载,如何使用PHP下载网页
  20. java实现黑图、透明图检测

热门文章

  1. C. Colored Balls: Revisited codeforces 1728A
  2. matlab判定hurwitz_[转载]劳斯(Routh-Hurwitz)稳定判据-符号运算版
  3. [推荐]零售业CRM应用突破之道 穆穆-movno1 (入选推荐日志,加10币)
  4. 微信企业号 苹果ios 返回页面不刷新 h5
  5. C# TSC TE244 PrintDocument 固定资产哑银不干胶标签打印
  6. C++编译错误与运行时错误
  7. GEE(Python)逐像元线性拟合
  8. 蜂鸣器播放音乐 fpga实现
  9. vue 项目使用 webpack 构建自动获取电脑ip地址
  10. SCI分区方法---JCR期刊分区及其检索方法