使用golang sql连接mysql时,如果我的用户名中包含@符号怎么办?
Posted
技术标签:
【中文标题】使用golang sql连接mysql时,如果我的用户名中包含@符号怎么办?【英文标题】:What if my user name contains at sign '@' when use golang sql to connect mysql? 【发布时间】:2022-01-11 17:09:36 【问题描述】:应用程序需要一个名称包含@
字符的用户,我发现golang-sql似乎会在名称包含@
并且密码为空时崩溃,就像
sql.Open("mysql", "root@proxy@tcp(172.21.30.22:3306)..")
【问题讨论】:
尝试Config.FomatDSN
让驱动程序代码自己做必要的事情。
@kostix 我不认为this helps in this case - 因为@
没有被转义。我肯定已经看到 MySQL 驱动程序在密码中出现特殊字符 - 即使使用 Config.FormatDSN
也是如此。因此,当前的 mysql Go
驱动程序可能无法使用 OP 的凭据。
如果是这样——我的意思是即使负责准备句法正确的 DSN 的 stock 函数无法解决它——这是一个值得上游报告的错误。
来自 MySQL 的 This manual 说在适用的情况下使用%40
而不是@
,并且还建议了一种称为“键值对”的替代方法。我会尝试这两件事。不过,我也会报告一个错误。
【参考方案1】:
当您在用户名中使用特殊字符时,您应该使用引号将用户名与域名分开
例如
sql.Open("mysql", "'root@proxy'@'tcp(172.21.30.22:3306)'")
【讨论】:
没用.....以上是关于使用golang sql连接mysql时,如果我的用户名中包含@符号怎么办?的主要内容,如果未能解决你的问题,请参考以下文章