hdbcli.dbapi.Error:(10,"身份验证失败"),当密码包含特殊字符时

2020-08-18 00:41发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

当我在密码" Aditya $ 123"中输入$时,始终出现错误hdbcli.dbapi.Error:(10,"身份验证失败")。 我正在使用具有以下连接语法的标准hdbcli dbapi:

self.dbConn = dbapi.connect(user = db_user,password =" db_password",port = port,address = address)

self.cursor = self.dbConn.cursor()

我试图转义$字符,但这没有帮助:

db_password = db_password.replace('$','\ $')

我检查了此注释 /img/questions/518509/using-credentials-from-hdbuserstore-results-in-err.html ,但不确定在这里我缺少什么。 任何帮助是极大的赞赏。 请不要让我能够使用hdbsql从终端进行连接:

/usr/sap/CLO/HDB96> hdbsql -i 96 -p Aditya $ 123 -u系统

欢迎使用SAP HANA数据库交互式终端。

类型:\ h以获取命令帮助

\ q退出

hdbsql CLO => \ s

主机:localhost:39613

sid:CLO

dbname:CLO

用户:SYSTEM

内核版本:1.00.122.23.1548298510

SQLDBC版本:libSQLDBCHDB 1.00.120.118.1548119815

自动提交:开启

语言环境:en_US.UTF-8

输入编码:UTF8

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

当我在密码" Aditya $ 123"中输入$时,始终出现错误hdbcli.dbapi.Error:(10,"身份验证失败")。 我正在使用具有以下连接语法的标准hdbcli dbapi:

self.dbConn = dbapi.connect(user = db_user,password =" db_password",port = port,address = address)

self.cursor = self.dbConn.cursor()

我试图转义$字符,但这没有帮助:

db_password = db_password.replace('$','\ $')

我检查了此注释 /img/questions/518509/using-credentials-from-hdbuserstore-results-in-err.html ,但不确定在这里我缺少什么。 任何帮助是极大的赞赏。 请不要让我能够使用hdbsql从终端进行连接:

/usr/sap/CLO/HDB96> hdbsql -i 96 -p Aditya $ 123 -u系统

欢迎使用SAP HANA数据库交互式终端。

类型:\ h以获取命令帮助

\ q退出

hdbsql CLO => \ s

主机:localhost:39613

sid:CLO

dbname:CLO

用户:SYSTEM

内核版本:1.00.122.23.1548298510

SQLDBC版本:libSQLDBCHDB 1.00.120.118.1548119815

自动提交:开启

语言环境:en_US.UTF-8

输入编码:UTF8

付费偷看设置
发送
5条回答
微wx笑
1楼 · 2020-08-18 00:51.采纳回答

您好,我找到了解决此问题的方法。 我认为这可能是由于在hdbsql和hdbcli中处理特殊字符的方式引起的错误。 我使用hdbcli而不是hdbsql更新了密码,并且在此之后hdbcli和hdbsql连接都可以正常工作。 但是,如果我使用hdbsql更改带有特殊字符的密码,则hdbcli无法连接到数据库。

感谢您的协助!

关于,
Aditya

wang628962
2楼-- · 2020-08-18 00:51

嗨,迈克,

我正在使用此设置进行一些内部测试,因此,我是唯一可以访问此系统的人。 要回答您的问题,是的,我可以更改密码。 我正在尝试使用hdbcli查询数据库,并且由于此密码问题而卡住了。 我可以将密码更改为其他没有'$'的密码,但是我需要了解此问题的根本原因,因为可能在字段中使用了类似的密码。

谢谢

Aditya

打一壶酱油
3楼-- · 2020-08-18 01:05

您可以更改密码吗? $可能是系统中某个地方的特殊字符。 您还与您的DBA讨论过此问题吗? 他们怎么说?

Climb_Ma
4楼-- · 2020-08-18 01:09

很好。

没有Aditya,您的正确密码更改方法是。

因此,hdbcli和hdbsql直接接受$,而hdbuserstore需要转义符(\ $)!

SAP应该重新查看其注释2490797,其中说如果需要转义, 即使对于hdbsql也具有特殊字符。 $是特殊字符。

黑丝骑士
5楼-- · 2020-08-18 01:01

嗨,Aditya,

这很有趣!

hdbsql,hdbcli和hdbuserstore-这些都来自同一个hana客户端 。

但是,来自这里和您遇到的问题,我看到了这些情况:

案例1- hdbsql直接执行时会接受特殊字符(例如$)。

情况2-当使用hdbuserstore将相同的字符($)加密到KEY中时,hdbsql无法连接。 这意味着,hdbuserstore认为字符"特殊"而不加密。

情况3-hdbcli无法与$连接,并认为它是特殊字符。

2490797 所述,特殊字符即使在万一出现的情况下也需要转义 hdbsql的情况(案例1),但在Nil和您的案例中,hdbsql都可以与$一起使用(如果未在KEY中使用)。 这是否意味着$不是一个特殊字符? 令人惊讶的。

您可以再尝试一种情况吗? 这是第4种情况,将hdbcli与KEY一起使用(在hdbuserstore中创建具有ID密码的密钥,并使用该密钥在hdbcli中进行连接

connection = dbapi.connect('host',39613,'KEY')

创建密钥时,请使用\ $在hdbuserstore中转义。

一周热门 更多>