如何在MySQLsh连接时转义用户名中的@符号
解决MySQL Shell连接时用户名含@符号的URI转义问题
这个问题我之前折腾过好一会儿,URI格式里的@是用来切分「用户名密码」和「服务器地址」的,所以当用户名本身带@的时候,直接写肯定会让解析器搞混。给你几个靠谱的解决办法:
方法1:URL编码转义@符号
把用户名里的@替换成URL编码的%40,这样MySQL Shell的URI解析器就会把%40识别成用户名的一部分,而第二个@才是用来分隔服务器地址的标记。
示例命令:
mysqlsh mysql://userid%40salesdeparment:@123.45.678.123:3306/
如果你的密码里也有特殊字符(比如#、&这类),同样可以用对应的URL编码来转义,比如#换成%23,&换成%26。
方法2:用命令行参数指定连接信息
避开URI格式,直接用--user、--host、--port这些参数来指定,这样就不用纠结符号转义的问题了:
示例命令:
mysqlsh --user=userid@salesdeparment --host=123.45.678.123 --port=3306
如果需要指定密码,可以加上--password参数,运行后会交互式提示你输入密码(推荐这种方式,避免明文密码泄露);要是一定要写在命令里,就用--password=你的密码。
方法3:进入MySQL Shell交互模式后再连接
先启动MySQL Shell,然后用内置的\connect命令来连接,这个命令的解析逻辑会自动识别用户名里的@:
步骤:
- 运行
mysqlsh进入交互界面 - 执行连接命令:
\connect userid@salesdeparment@123.45.678.123:3306
之后按提示输入密码就能正常连接了。
内容的提问来源于stack exchange,提问作者Dreamer
相关产品推荐
相关产品推荐

