- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在使用 Anaconda 的 Python 3 版本创建到 MSSQL 服务器的 ODBC 连接时遇到错误:
pyodbc.Error: ('HY000', '[HY000] [Microsoft][ODBC Driver 17 for SQL Server]SSPI Provider: No Kerberos credentials available (default cache: KEYRING:persistent:1918003883) (851968) (SQLDriverConnect)')
服务器已通过 SSSD 加入 Windows Active Directory 域和 Kerberos 领域。我可以通过 SSH 连接到服务器,并使用 kinit
检索 TGT。我什至可以使用 klist
查看凭证缓存。但是 python 进程似乎无法找到 Kerberos TGT 或 Kerberos 凭据缓存。
设置:
python
$ /mnt/ds/anaconda3/bin/python --version
Python 3.6.5 :: Anaconda, Inc.
测试.py
from pyodbc import connect
connection = connect('DSN=MyDSN')
/etc/odbc.ini
[MyDSN]
#Driver=ODBC Driver 13 for SQL Server
Driver=ODBC Driver 17 for SQL Server
Description=MyMSSQL ODBC Driver
Trace=No
Server=MyMSSQL
Trusted_Connection=Yes
/etc/odbcinst.ini
[ODBC Driver 17 for SQL Server]
Description=Microsoft ODBC Driver 17 for SQL Server
Driver=/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.1.so.0.1
UsageCount=1
红帽企业 Linux
$ cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.5 (Maipo)
$ uname -r
3.10.0-862.2.3.el7.x86_64
msodbcsql17
$ sudo yum info msodbcsql17
Loaded plugins: amazon-id, rhui-lb, search-disabled-repos
Installed Packages
Name : msodbcsql17
Arch : x86_64
Version : 17.1.0.1
Release : 1
Size : 17 M
Repo : installed
From repo : packages-microsoft-com-prod
Summary : ODBC Driver for Microsoft(R) SQL Server(R)
License : https://aka.ms/odbc170eula
Description : This package provides an ODBC driver that can connect to Microsoft(R) SQL Server(R).
unixODBC
$ sudo yum info unixODBC
Loaded plugins: amazon-id, rhui-lb, search-disabled-repos
Installed Packages
Name : unixODBC
Arch : x86_64
Version : 2.3.1
Release : 11.el7
Size : 1.2 M
Repo : installed
From repo : rhui-REGION-rhel-server-releases
Summary : A complete ODBC driver manager for Linux
URL : http://www.unixODBC.org/
License : GPLv2+ and LGPLv2+
Description : Install unixODBC if you want to access databases through ODBC.
: You will also need the mysql-connector-odbc package if you want to access
: a MySQL database, and/or the postgresql-odbc package for PostgreSQL.
$ /mnt/ds/anaconda3/bin/conda list unixodbc
# packages in environment at /mnt/ds/anaconda3:
#
# Name Version Build Channel
unixodbc 2.3.6 h1bed415_0
pyodbc
$ /mnt/ds/anaconda3/bin/conda list pyodbc
# packages in environment at /mnt/ds/anaconda3:
#
# Name Version Build Channel
pyodbc 4.0.23 py36hf484d3e_0
以下是我尝试过的一些方法:
使用由 Anaconda2 打包的 Python-2.7.15。成功了!
使用isql
。我运行了 isql MyDSN
并连接上了。
有两个 unixODBC 库(一个通过 yum
安装;另一个通过 conda
安装)。默认情况下,它将使用 conda
,但我强制它使用带有 LD_PRELOAD
的系统 unixODBC 包。同样的错误。
我尝试将数据库驱动程序降级为 msodbcsql-13.1.9.2-1,然后降级为 msodbcsql-13.0.1.0-1。同样的错误。
我尝试将 PyODBC 换成另一个 Python ODBC 库 TurbODBC。同样的错误。
我使用 python-3.5 在 conda
中创建了一个单独的环境。那奏效了!仍然不确定为什么。
我编写了一个与 unixODBC 接口(interface)的简单 C 程序。该程序能够通过 Kerberos 连接到 MSSQL 服务器。
我通过 strace
运行了 python2 正测试用例和 python3 负测试用例以查看系统调用。我认为这可能会揭示一些东西。似乎他们都开始在文件系统上寻找 client.keytab 文件。然后,在积极的测试用例中,它将回退到搜索内核的 key 环,在那里它将成功找到凭证缓存并继续。但是,在否定测试用例中,它只是重试查找 client.keytab,而从不尝试搜索 key 环。
我启用了 unixODBC 跟踪选项,一个用于 Python3 测试用例,另一个用于 Python2 测试用例。不幸的是,痕迹(如下所示)没有向我透露任何信息。
py3-unixodbc.trace
[ODBC][8741][1527046794.480751][__handles.c][460]
Exit:[SQL_SUCCESS]
Environment = 0x55eea73ed130
[ODBC][8741][1527046794.480806][SQLSetEnvAttr.c][189]
Entry:
Environment = 0x55eea73ed130
Attribute = SQL_ATTR_ODBC_VERSION
Value = 0x3
StrLen = 4
[ODBC][8741][1527046794.480824][SQLSetEnvAttr.c][363]
Exit:[SQL_SUCCESS]
[ODBC][8741][1527046794.480843][SQLAllocHandle.c][375]
Entry:
Handle Type = 2
Input Handle = 0x55eea73ed130
[ODBC][8741][1527046794.480861][SQLAllocHandle.c][493]
Exit:[SQL_SUCCESS]
Output Handle = 0x55eea7400500
[ODBC][8741][1527046794.481176][SQLDriverConnectW.c][290]
Entry:
Connection = 0x55eea7400500
Window Hdl = (nil)
Str In = [DSN=MyDSN][length = 15]
Str Out = (nil)
Str Out Max = 0
Str Out Ptr = (nil)
Completion = 0
UNICODE Using encoding ASCII 'ISO8859-1' and UNICODE 'UCS-2LE'
[ODBC][8741][1527046794.575566][__handles.c][460]
Exit:[SQL_SUCCESS]
Environment = 0x55eea746e360
[ODBC][8741][1527046794.575614][SQLGetEnvAttr.c][157]
Entry:
Environment = 0x55eea746e360
Attribute = 65002
Value = 0x7ffd399177f0
Buffer Len = 128
StrLen = 0x7ffd3991778c
[ODBC][8741][1527046794.575632][SQLGetEnvAttr.c][264]
Exit:[SQL_SUCCESS]
[ODBC][8741][1527046794.575651][SQLFreeHandle.c][219]
Entry:
Handle Type = 1
Input Handle = 0x55eea746e360
py2-unixodbc.trace
[ODBC][8746][1527046842.073439][__handles.c][460]
Exit:[SQL_SUCCESS]
Environment = 0x185e2e0
[ODBC][8746][1527046842.073530][SQLSetEnvAttr.c][189]
Entry:
Environment = 0x185e2e0
Attribute = SQL_ATTR_ODBC_VERSION
Value = 0x3
StrLen = 4
[ODBC][8746][1527046842.073552][SQLSetEnvAttr.c][363]
Exit:[SQL_SUCCESS]
[ODBC][8746][1527046842.073572][SQLAllocHandle.c][375]
Entry:
Handle Type = 2
Input Handle = 0x185e2e0
[ODBC][8746][1527046842.073590][SQLAllocHandle.c][493]
Exit:[SQL_SUCCESS]
Output Handle = 0x1857d40
[ODBC][8746][1527046842.073613][SQLDriverConnectW.c][290]
Entry:
Connection = 0x1857d40
Window Hdl = (nil)
Str In = [DSN=MyDSN][length = 15]
Str Out = (nil)
Str Out Max = 0
Str Out Ptr = (nil)
Completion = 0
UNICODE Using encoding ASCII 'ISO8859-1' and UNICODE 'UCS-2LE'
[ODBC][8746][1527046842.208760][__handles.c][460]
Exit:[SQL_SUCCESS]
Environment = 0x1967210
[ODBC][8746][1527046842.208830][SQLGetEnvAttr.c][157]
Entry:
Environment = 0x1967210
Attribute = 65002
Value = 0x7ffe1153fcf0
Buffer Len = 128
StrLen = 0x7ffe1153fc8c
[ODBC][8746][1527046842.208849][SQLGetEnvAttr.c][264]
Exit:[SQL_SUCCESS]
[ODBC][8746][1527046842.208869][SQLFreeHandle.c][219]
Entry:
Handle Type = 1
Input Handle = 0x1967210
我只想说,我已经无计可施了。 任何想法将不胜感激!
最佳答案
迟到的回复,但我希望有人会发现它有用。
对我来说,这个非常相同的问题是由 krb5
包引起的,它与系统范围的 kerberos 安装共存:从环境中删除它解决了问题(我试图让它工作但是没有成功)。
关于python - Anaconda3的python找不到kerberos凭证缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50806400/
有没有办法测试人工凭证以及我是否可以成功访问存储库?从命令行运行我无法查看是否使用了凭据以及来自带有 ?trace 的浏览器附加到 url 拒绝匿名用户访问。 最佳答案 您可以使用 Artifacto
我正在尝试运行将使用 npm publish 的 Jenkins 2 管道(Jenkinsfile)将包发布到本地 NPM 存储库。 为了做到这一点,我尝试在 Jenkinsfile 中使用以下阶段:
我正试图从我的 JavaScript 前端应用程序的 S3 中获取我的图像对象。 根据文档,这些是所需的步骤: import * as AWS from "aws-sdk"; AWS.config.u
我正在使用 IVONA SpeachCloud SDK(创建语音样本):https://github.com/IvonaSoftware/ivona-speechcloud-sdk-java/blob
我有一个问题:ACAccountStore 是否会自动更新 Twitter token ?我需要在我的服务器中使用 token 来自动发布。请分享您的经验。 最佳答案 如果您像这样使用 SLReque
我正在为为 CMS 创建的商店/购物车创建一个 PayPal 网关。完成后,网关将可供其他人使用。在我的开发者帐户中创建的 API 凭据(客户端 ID 和 secret )是否保留在应用程序中,还是每
我在 Magnto 1.9 中启用了 paypal 现在我想在我的 Observer 中调用另一个 paypal API,为此我需要 paypal 用户、密码和签名,我在启用 paypal 时已经保存
有没有办法用 TortoiseGit 保存 GITHUB 的用户凭证? 每当我进行推/pull 时,它都会提示我以下对话框。 我想将我的用户凭据信息保存在某个地方,就像我使用 TortoiseSVN
我有一个 Jenkins 工作,它应该构建一个 Jar 并将其添加到 Nexus。我已经配置了构建后操作以将 Maven Artifact 部署到 nexus 存储库。 问题是,nexus 需要用户名
在我之前的 Jenkinsfile 中,我曾经有过这个: withCredentials([[ $class: 'AmazonWebServicesCredentialsBinding',
我的证书有问题,我什至不确定我是否选择了正确的方法...长话短说..我需要我的 Jenkins 工作在构建过程中从需要使用证书身份验证的网站下载一些东西 - 我得到了 .p12 和 .cert 证书。
我在使用 WWW:Mechanize 的凭据代理访问和网络抓取需要 NTLM 身份验证的站点时遇到问题。我在网上读到凭证代理需要 4 个参数:基址、领域、用户名和密码。我不确定用于基础或领域的内容,因
我正在使用 AWS Java SDK 并尝试运行一些测试;得到: 无法从类路径上的/AwsCredentials.properties 文件加载 AWS 凭证 根据 AWS 规范,凭证文件 @ ~/.
我已将我的 MongoDB 设置为仅接受通过 SSL 的连接。 Mongo 具有我使用以下命令生成的证书的句柄 openssl req -newkey rsa:2048 -new -x509 -day
如何让 gspread 使用我的 oauth 凭据?我的 http 响应 gspread.httpsession.HTTPError 出现错误:(谁能告诉我我的代码有什么问题吗? import dat
我有一大桶 S3 文件要放在 HDFS 上。考虑到涉及的文件数量,我首选的解决方案是使用“分布式副本”。但是由于某种原因,我无法让 hadoop distcp 获取我的 Amazon S3 凭据。我使
我在 Magnto 1.9 中启用了 paypal现在我想在我的 Observer 中调用另一个 paypal API,为此我需要 paypal 用户、密码和签名,我在启用 paypal 时已经保存了
作为构建 docker 容器的过程的一部分,我需要从 s3 存储桶中提取一些文件,但我不断收到 fatal error: Unable to locate credentials 即使现在我正在设置凭
应用 Spring 中的简单 REST API 注册服务,在发送正确的 POST 请求后在数据库中创建新用户,并且 Amazon SES 发送一封包含注册链接的电子邮件以进行验证。 问题 在我的操作系
背景 我使用 google-api-python-client django_sample 获得了 Google API 的 access_token . 为了离线访问,我添加了 FLOW.param
我是一名优秀的程序员,十分优秀!