首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql-代理proxy.queries:append调用失败,.server_capabilities错误

mysql-代理proxy.queries:append调用失败,.server_capabilities错误
EN

Stack Overflow用户
提问于 2013-08-02 16:45:16
回答 1查看 394关注 0票数 0

我正在尝试使用mysql-代理来替代这样的凭据:

代码语言:javascript
复制
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
        })
)

这个错误是失败的:

(关键) (read_auth)字符串"/home/aabbcc/test.lua":51:必须设置.server_capabilities

如何正确设置".server_capabilities“?

EN

回答 1

Stack Overflow用户

发布于 2013-11-25 15:56:45

示例/教程-扰流. out文件有很多问题-我认为它与当前的mysql代理已经过时了。您需要一些常量和proto.to_response_packet调用的另一个参数:

代码语言:javascript
复制
...
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

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

代码语言:javascript
复制
network_mysqld_proto_password_scramble: assertion `20 == challenge_len' failed

由于某些原因,扰码缓冲区比它应该的长--如果打印出来,在末尾会看到空值--我们需要将其缩减到20个字符,然后才能使用它:

代码语言:javascript
复制
...
response = password.scramble((s.scramble_buffer):sub(1,20), password.hash("cpass!1")),
...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18022156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档