工作笔记:如何用Django连接Kerberized甲骨文(Oracle)数据库
背景简介
很多企业上的数据库是使用Kerberos授权的无明文密码数据库。这种把普通Oracle数据库转化为由Kerberos授权的Oracle数据库的过程叫做Kerberize
,也可以说是Kerberos化
。
如果你恰好使用Django
作为后端框架,并且想要配置这种数据库的话,应该具体怎么设置呢?网上很少有这样的资源,这里分享一下我的项目配置中的经验。
环境/软件版本&配置:
- Django: 3.2
- cx_Oracle: 8.1.0
- OS: Windows
具体过程
这份官方文档包含了一些Oracle的配置信息,可能对理解以下过程有帮助
- 前提:你已经安装好了
Django
和与之版本匹配的cx_Oracle
- 按照
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已经包含了这些信息} }
- 在
manage.py
中添加环境变量# PATH_TO_YOUR_CONFIG_DIR: 是你的配置(config)文件夹,没有固定文件夹,你可以自定义一个 os.environ.setdefault('TNS_ADMIN', 'PATH_TO_YOUR_CONFIG_DIR')
注意:
TNS_ADMIN
这个环境变量可以不用从这里加入,只要你能确定这个变量出现在系统的环境变量里就可以了。比如你可以用Powershell
写set TNS_ADMIN=PATH_TO_YOUR_CONFIG_DIR
也应该没问题。可以用print('TNS_ADMIN' in os.environ)
检查是否你的Django
项目里面包含这个环境变量。 - 在
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
文件的路径。 - 用
kinit
获取新的Ticket Granting Ticket(TGT)
kinit -k -t PATH_TO_YOUR_KEYTAB PRINCIPAL@REALM
- 一切就绪后就可以启动
Django
服务器了,如果一起配置没问题的话,开发服务器就起来了。python manage.py runserver
这边只是个例子,确保你用的是正确的
python
路径和manage.py
路径。
结语
如果你有用常规方式(比如bash或者纯Python)配置并且连接Kerberized Oracle
,那这个过程对你来说可能并不复杂。如果Django
配置不成功的话,可以从更简单的过程开始。我建议你使用纯Python
先连接一次,具体可以看这个文档。一步一步来,从简单到复杂,会更容易一些,也便于理解整个过程。
工作笔记:如何用Django连接Kerberized甲骨文(Oracle)数据库相关推荐
- 如何用PLSQL连接服务器的Oracle数据库
由于ORACLE比较庞大,安装也稍有点麻烦.我们平时不需要每台电脑都安装ORACLE,只需要在服务器安装ORACLE就可以了,然后使用PLSQL远程链接,但是需要ORACLE的一些配置文件的支持,我们 ...
- Django连接使用SQL Server数据库(windows版)
2019独角兽企业重金招聘Python工程师标准>>> 前言: 众所周知,Django 默认支持sqlite,mysql,oracle,postgresql数据库,不支持SQL Se ...
- linux数据库创建表空间语句,如何用LINUX用命令创建ORACLE数据库表空间和用户
如何用LINUX用命令创建ORACLE数据库表空间和用户 文本模式下如何建 更新时间:2019-06-21 19:36 最满意答案 先su 到 oracle用户,SYS用户以DBA身份登陆 //创建临 ...
- 无需编程,基于甲骨文oracle数据库零代码生成CRUD增删改查RESTful API接口
无需编程,基于甲骨文oracle数据库零代码生成CRUD增删改查RESTful API接口 回顾 通过之前一篇文章 无需编程,基于PostgreSQL零代码生成CRUD增删改查RESTful API接 ...
- jdbc链接mysql按照id查询_使用jdbc连接并操作Oracle数据库(增删改查IDUS)
使用jdbc连接并操作Oracle数据库(增删改查IDUS) [oracle@zaibei-db ~]$ sqlplus /nolog SQL*Plus: Release 11.2.0.4.0 Pro ...
- PLSQL无法连接64位Oracle数据库/Database下拉框为空的解决方法
PLSQL无法连接64位Oracle数据库/Database下拉框为空的解决方法 参考文章: (1)PLSQL无法连接64位Oracle数据库/Database下拉框为空的解决方法 (2)https: ...
- jsp mysql oracle_Jsp 连接 mySQL、Oracle 数据库备忘
Jsp 连接 mySQL.Oracle 数据库备忘 2009-12-15 16:47 Jsp 环境目前最流行的是 Tomcat5.0.Tomcat5.0 自己包含一个 Web 服务器,如果是测试,就没 ...
- Django web框架-----Django连接本地现有mysql数据库
第一步:win10下载mysql5.7压缩包配置安装mysql,创建数据库或导入数据库 第二步:win10搭建django2.1.7开发环境,创建项目为mytestsite,创建应用app为quick ...
- php如何连接数据库 甲骨文,Windows PHP/phpStudy 连接 甲骨文Oracle 数据库 oci8 – 让我们荡起双桨的博客 – CSDN博客...
好多好多年前,我也玩过一次PHP连接Oracle数据库,因为Oracle不是大众民用所以使用到的概率也很低.今天难得遇到了一个配置的机会,就要试试咯. 一般我们开启扩展支持,只需要在php.ini中打 ...
最新文章
- ピエタ~幸せの青い鳥~相关
- 使用httpClient发送get\post请求
- 词袋模型(bag of words)构建并使用主题模型(topic models)特征进行文本聚类分析(clustering analysis)实战
- springmvc和tomcat原理
- 数据结构——折半查找
- centos mysql root_CentOS下MySQL忘记root密码解决方法
- qn模块java脚本_BAT批处理实现自动安装软件功能
- Ubuntu NFS搭建过程
- windows平台编译vlc
- 浅谈SpringMVC之DispatcherServlet
- Pytorch损失函数BCELoss,BCEWithLogitsLoss
- 计算机读法综艺中文翻译英语,汉语综艺节目英译字幕组现状初探
- 计算机四级 网络工程师 考过指南
- 壮观性能服务器图片介绍,配至强7500 图解惠普ProLiant DL980 G7
- 《剑指Offer》51. 二叉搜索树的第k个结点
- python openpyxl删除excel特定行数据遇到的问题
- 2021-2027全球与中国便携式X射线荧光光谱仪市场现状及未来发展趋势
- Ue4 UI优化文档整理理解
- php 网页内容下载,如何使用PHP下载网页
- java实现黑图、透明图检测
热门文章
- C. Colored Balls: Revisited codeforces 1728A
- matlab判定hurwitz_[转载]劳斯(Routh-Hurwitz)稳定判据-符号运算版
- [推荐]零售业CRM应用突破之道 穆穆-movno1 (入选推荐日志,加10币)
- 微信企业号 苹果ios 返回页面不刷新 h5
- C# TSC TE244 PrintDocument 固定资产哑银不干胶标签打印
- C++编译错误与运行时错误
- GEE(Python)逐像元线性拟合
- 蜂鸣器播放音乐 fpga实现
- vue 项目使用 webpack 构建自动获取电脑ip地址
- SCI分区方法---JCR期刊分区及其检索方法