From ae50a6ec9ee106f927d007196a220c0df6251b36 Mon Sep 17 00:00:00 2001 From: t8y2 <1156263951@qq.com> Date: Thu, 21 May 2026 16:45:48 +0800 Subject: [PATCH] fix(mysql): run SHOW GRANTS via text protocol --- crates/dbx-core/src/db/mysql.rs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/crates/dbx-core/src/db/mysql.rs b/crates/dbx-core/src/db/mysql.rs index e31c8ebac8..7d7b112e27 100644 --- a/crates/dbx-core/src/db/mysql.rs +++ b/crates/dbx-core/src/db/mysql.rs @@ -482,6 +482,9 @@ fn requires_text_protocol_query(sql: &str) -> bool { let tokens = sql.trim().trim_end_matches(';').split_whitespace().map(|token| token.to_ascii_lowercase()).collect::>(); + if tokens.len() >= 2 && tokens[0] == "show" && tokens[1] == "grants" { + return true; + } matches!( tokens.iter().map(String::as_str).collect::>().as_slice(), @@ -625,6 +628,8 @@ mod tests { assert!(requires_text_protocol_query("show full processlist")); assert!(requires_text_protocol_query("SHOW SLAVE STATUS")); assert!(requires_text_protocol_query("show replica status")); + assert!(requires_text_protocol_query("SHOW GRANTS")); + assert!(requires_text_protocol_query("SHOW GRANTS FOR 'repl'@'%'")); assert!(!requires_text_protocol_query("SHOW TABLES")); assert!(!requires_text_protocol_query("SELECT * FROM users")); }