暂无图片
telnet mysql 端口为啥显示mysql_native_password?
我来答
分享
手机用户1559
2024-05-08
telnet mysql 端口为啥显示mysql_native_password?

问题:

 检测mysql服务器的mysql服务端口是否可通,显示有mysql_native_password的关键字

而这个关键字没太明白啥意思 。因为telnet 别的端口 显示内容很精简的,没显示这样的信息。


命令:telnet    192.168.100.216   3306

显示:

Trying 192.168.100.216...
Connected to 192.168.100.216.
Escape character is '^]'.
N
5.7.38-log'#smNU]e-'bsaF0|Kj'mysql_native_password

我来答
添加附件
收藏
分享
问题补充
2条回答
默认
最新
大大刺猬

原因

当建立一个TCP连接的时候, MYSQL SERVER会主动发一个HandshakeV10过来, 里面包含数据库版本, 加密策略,capability_flags, salt等信息
image.png
所以你telnet mysql的时候能看到版本,密码插件(mysql_natvie_password/caching_password我也都讲过)之类的信息.
你telnet其它服务/端口的时候, 其它服务不一定主动发送握手信息.(全看协议怎么定义)

其它

感兴趣的话, 可以看下我之前写的MYSQL连接过程的文章. 里面附有相关PYTHON源码. https://www.modb.pro/db/625127
其它信息可以看合集: https://www.modb.pro/topic/625137

暂无图片 评论
暂无图片 有用 2
暂无图片
手机用户1559
题主
2024-05-10
谢谢 大大刺猬老师的指点。
lianR

"mysql_native_password"是MySQL数据库的一种身份验证插件。当你连接到MySQL服务器时,服务器会告诉你它期望使用哪种身份验证方法。在这个例子中,服务器告诉你它期望使用"mysql_native_password"插件进行身份验证。

这个插件使用的是MySQL的原生密码机制,也就是说,它将用户的密码存储在mysql.user表中,以便在用户登录时进行验证。

至于为什么你在telnet到其他端口时没有看到这样的信息,那是因为这是MySQL特有的信息,只有当你连接到MySQL服务器时,服务器才会发送这样的信息。

暂无图片 评论
暂无图片 有用 0
手机用户1559
题主
2024-05-10
学习了。感谢 lianR老师指点 。
lianR
答主
2024-05-10
客气了不是,以后相互指点交流
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏