使用Telnet连接MySQL 8.0出现乱码,输入密码即终止通信求助
解决MySQL 8.0 telnet连接乱码及认证终止问题
关于telnet连接出现乱码的说明
telnet连接MySQL 3306端口后显示乱码是正常现象,因为MySQL的通信协议并非纯文本格式,握手阶段传输的是二进制数据,telnet作为纯文本终端无法解析这些二进制内容,所以会显示乱码,这不是连接故障。
输入密码后连接终止的原因
MySQL 8.0默认采用caching_sha2_password认证插件,该插件的认证流程需要复杂的加密交互,而telnet是纯文本输入工具,无法完成该插件要求的认证步骤,因此输入密码后连接会直接终止。你能通过Python连接成功,是因为Python的MySQL客户端库(如mysql-connector-python)已经实现了对caching_sha2_password插件的支持。
可行的解决方案
使用官方MySQL客户端工具(推荐):
直接使用MySQL自带的客户端命令行工具连接,这是最可靠的方式:mysql -h [你的IP] -u root -p输入密码后即可正常进入数据库交互界面。
查看MySQL握手包(仅用于测试):
如果只是想测试端口连通性或查看握手信息,可以用nc(netcat)替代telnet,它能更清晰地显示二进制握手数据:nc [你的IP] 3306临时切换认证插件(不推荐生产环境):
若一定要用telnet类工具尝试认证,可以将用户的认证插件临时改为旧版的mysql_native_password(该插件支持简单的文本密码交互):ALTER USER 'root'@'[你的IP]' IDENTIFIED WITH mysql_native_password BY '你的密码'; FLUSH PRIVILEGES;注意:此方式会降低认证安全性,仅适合测试场景,生产环境不建议使用。
内容的提问来源于stack exchange,提问作者fatbee7
相关产品推荐
相关产品推荐

