承接国内外服务器租用托管、定制开发、网站代运营、网站seo优化托管接单、网站代更新,新老站点皆可!!咨询QQ:3787320601

mysql sock文件存储了甚么信息

管理员 2023-07-25 08:05:10 互联网圈 0 ℃ 0 评论 2084字 收藏

mysql sock文件存储了甚么信息

mysql.sock到底存储了甚么东西?

mysql.sock作为mysql的套接字一般用于本地连接数据库,在速度上优于TCP/IP连接。一般放置在/tmp/mysql.sock目录下,我们先查看下它的内容:

[root@ tmp]# ll -i | grep mysql
85 srwxrwxrwx 1 mysql mysql 0 Apr 18 15:03 mysql.sock

可以看到它的内容大小为0,即没有存储任何的内容,此时我们通过mysql -uroot -p来访问(即默许的-h localhost)可以访问成功数据库。

但当我们新建一个类似的mysql.sock的时候,却没法替换原本的空文件:

mv mysql.sock mysql.sock.bak
# 创建新的mysql socket文件
mksock mysql.sock
chown mysql:mysql mysql.sock
chmod 777 mysql.sock
# 展现对照两个mysql.sock
[root@ tmp]# ll -i | grep mysql
85 srwxrwxrwx 1 mysql mysql 0 Apr 18 15:03 mysql.sock.bak
37 srwxrwxrwx 1 mysql mysql 0 Aug 20 20:35 mysql.sock

再次访问本地数据库:

[root@ tmp]# mysql -uroot -p -hlocalhost
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)

二者内容除inode号不一样外,完全一样,但却不能使用mysql访问本地数据库了,新的socket为何不能代替原本的socket文件,这个文件到底存储了甚么,又是怎样跟数据库相互认证的?

思考很久,有了自己的解释,但由于没有看linux对socket的具体设计和实现代码,不一定正确,详情查看:

#

想要看具体实现的可以参考linux源码:

https://man7.org/linux/man-pages/man7/socket.7.html

本篇文章到此结束,如果您有相关技术方面疑问可以联系我们技术人员远程解决,感谢大家支持本站!

文章来源:丸子建站

文章标题:mysql sock文件存储了甚么信息

https://www.wanzijz.com/view/66722.html

相关文章

Related articles

X

截屏,微信识别二维码

微信号:weimawl

(点击微信号复制,添加好友)

打开微信