服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - Mysql - mysql sock文件存储了什么信息

mysql sock文件存储了什么信息

2022-07-16 10:11赵帅强 Mysql

这篇文章主要为大家介绍了mysql sock文件存储了什么信息的内容详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

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

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

?
1
2
[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的时候,却无法替代原有的空文件:

?
1
2
3
4
5
6
7
8
9
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

再次访问本地数据库:

?
1
2
[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的具体设计和实现代码,不一定正确,详情查看:

http://www.tuohang.net/article/234774.html

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

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

以上就是mysql sock文件存储了什么信息的详细内容,更多关于mysql sock文件存储信息的资料请关注服务器之家其它相关文章!

原文链接:https://segmentfault.com/q/1010000016082235

延伸 · 阅读

精彩推荐