mysql 用的是 8.0 。插件是 caching_sha2_password
skynet 默认扩展不支持这种模式。 所以想请教下这种怎么改写。 也看了 https://github.com/openresty/lua-resty-mysql 源码。还是一脑袋浆糊。
if auth_plugin == "caching_sha2_password" then token = _compute_caching_sha2_password_token(password, scramble) else token = _compute_token(password, scramble) end local client_flags = 260047 local req = strpack("<I4I4c1c23zs1z", client_flags, self._max_packet_size, strchar(charset), strrep("\0", 23), user, token, database ) local authpacket = _compose_packet(self, req) sockchannel:request(authpacket, dispatch_resp) if on_connect then on_connect(self) end function _compute_caching_sha2_password_token(password, scramble) -- 1. Compute SHA-256 hash of the password local password_hash = sha.sha256(password) -- 2. Concatenate the hash with the scramble local combined = sha.sha256(sha.sha256(password_hash .. scramble)) local token = xor(password_hash, combined) -- 3. Compute SHA-256 hash of the combined value return token end 下边是我检索 chatgpt 来的,但是不对。请教下大家。