gpt4 book ai didi

mysql-proxy proxy.queries :append call failing with . server_capability 错误

转载 作者:行者123 更新时间:2023-11-30 01:25:41 26 4
gpt4 key购买 nike

我正在尝试使用 mysql-proxy 来替换身份验证凭据,如下所示:

proxy.queries:append(1,
proto.to_response_packet({
username = "connect",
response = password.scramble(s.scramble_buffer, password.hash("cpass!1")),
charset = 8, -- default charset
database = c.default_db,
max_packet_size = 1 * 1024 * 1024
})
)

它因以下错误而失败:

(critical) (read_auth) [string "/home/aabbcc/test.lua"]:51: .server_capabilities has to be set

如何正确设置“.server_capability”?

最佳答案

examples/tutorial-scramble.lua 文件有很多问题 - 我认为它对于当前的 mysql-proxy 来说已经过时了。您需要一些常量和另一个参数来进行 proto.to_response_packet 调用:

...
local CLIENT_PROTOCOL_41 = 512 -- New 4.1 protocol
local CLIENT_SECURE_CONNECTION = 32768 -- New 4.1 authentication
local MYSQL_AUTH_CAPABILITIES = ( CLIENT_PROTOCOL_41 + CLIENT_SECURE_CONNECTION )
...
proxy.queries:append(1,
proto.to_response_packet({
username = "connect",
response = password.scramble(s.scramble_buffer, password.hash("cpass!1")),
charset = 8, -- default charset
database = c.default_db,
max_packet_size = 1 * 1024 * 1024,
server_capabilities = MYSQL_AUTH_CAPABILITIES
})
)

感谢这个 GitHub 项目提供的常量 - https://github.com/obrun/map-schema/blob/master/map-schema.lua

在此之后,您可能会收到另一个如下错误:

network_mysqld_proto_password_scramble: assertion `20 == challenge_len' failed

出于某种原因,打乱缓冲区比应有的长度要长 - 如果将其打印出来,您会在末尾看到空值 - 我们需要将其削减到 20 个字符,然后才能使用它:

...
response = password.scramble((s.scramble_buffer):sub(1,20), password.hash("cpass!1")),
...

关于mysql-proxy proxy.queries :append call failing with . server_capability 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18022156/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com