Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

archery从1.10.0升级到1.11.3版本后,无法连接mongo #2861

Open
chown1987 opened this issue Nov 15, 2024 · 2 comments
Open

archery从1.10.0升级到1.11.3版本后,无法连接mongo #2861

chown1987 opened this issue Nov 15, 2024 · 2 comments

Comments

@chown1987
Copy link

重现步骤

1、把archery升级到1.11.3
2、登录archery,在实例列表中随便测试mongo的连接,报连接失败
3、联系mongo的云厂商,确认mongo 4.2版本不支持SCRAM-SHA-256的连接方式

预期外的结果

1、通过查看,发现1.11.3版本中,pymongo的版本是4.x,无法支持mongo的SCRAM-SHA-1连接方式
2、能否在新版本中修复该bug,把pymongo兼容SCRAM-SHA-1和SCRAM-SHA-256的连接方式

日志文本

No response

版本

1.11.3

部署方式

Docker

是否还有其他可以辅助定位问题的信息?比如数据库版本等

No response

@weiyehan
Copy link

替换Archery-master\sql\engines目录下的mongo.py和tests.py解决了
tests.txt
mongo.txt
是的,这个错误是因为 PyMongo 4.x 版本移除了 authenticate() 方法。在 PyMongo 4.x 中,认证需要在创建连接时通过 MongoClient 的参数来完成。让我们修改代码来支持新版本的认证方式。主要修改:
移除了旧的 authenticate() 方法调用
将认证信息直接通过 MongoClient 的参数传入:
username/password: 用户名和密码
authSource: 认证数据库,默认使用 admin
authMechanism: 显式指定使用 SCRAM-SHA-1 认证机制
添加了连接超时参数 serverSelectionTimeoutMS
通过调用 server_info() 来测试连接是否成功
优化了错误处理,在连接失败时会关闭连接并抛出异常
这样修改后应该可以支持 PyMongo 4.x 版本的认证连接。同时也保持了向后兼容性,因为这些参数在旧版本中也是支持的。
如果你的 MongoDB 服务器使用其他认证机制(如 SCRAM-SHA-256),可以相应修改 authMechanism 参数。

@weiyehan
Copy link

用cursor写的

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants