我命由我,不由天!


  • 搜索
prometheus docker golang linux kubernetes

客户端与服务器连接的过程

发表于 2021-06-19 | 分类于 mysql | 0 | 阅读次数 252

TCP/IP

真实环境中,数据库服务器进程和客户端进程可能运行在不同的主机中,它们之间必须通过网络来进行通讯。MySQL采用TCP作为服务器和客户端之间的网络协议。在网络环境下,每台计算机都有一个唯一的IP地址,如果某个进程需要采用TCP协议进行网络通信,可以向操作系统申请一个端口号,范围是0~65535。在网络中的其他进程就可以通过IP地址+端口的方式通信了。

MySQL服务器启动时会默认申请3306端口号

mysqld -P3307 服务端监听指定的端口号

命名管道和共享内存

如果是Windows用户,客户端进程和服务器进程之间可以考虑使用命名管道或共享内存来通信

  • 使用命名管道来进行进程间通信
    • 需要在启动服务器程序的命令中加上--enable-named-pipe参数,然后在启动客户端程序的命令中加入--pipe或者--protocol=pipe参数。
  • 使用共享内存来进行进程间通信
    • 需要在启动服务器程序的命令中加上--shared-memory参数,在成功启动服务器后,共享内存便成为本地客户端程序的默认连接方式,不过我们也可以在启动客户端程序的命令中加入--protocol=memory参数来显式的指定使用共享内存进行通信。

共享内存和命名管道是Windows操作系统中的两种进程间通信方式

Unix域套接字文件

如果我们的服务器进程和客户端进程都运行在同一台操作系统为类Unix的机器上的话,可以使用Unix域套接字来进行进程间通信。如果我们在启动客户端程序的时候指定的主机名为localhost,或者指定了--protocal=socket的启动参数,那服务器程序和客户端程序之间就可以通过Unix域套接字文件来进行通信了。MySQL服务器程序默认监听的Unix域套接字文件路径为/tmp/mysql.sock,客户端程序也默认连接到这个Unix域套接字文件。如果我们想改变这个默认路径,可以在启动服务器程序时指定socket参数,就像这样:mysqld --socket=/tmp/a.txt

  • 本文作者: Dante
  • 本文链接: https://gaodongfei.com/archives/ke-hu-duan-yu-fu-wu-qi-lian-jie-de-guo-cheng
  • 版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 许可协议。转载请注明出处!
redis-跳跃表
服务器处理客户端请求
  • 文章目录
  • 站点概览
Dante

Dante

119 日志
5 分类
5 标签
RSS
Creative Commons
0%
© 2023 Dante
由 Halo 强力驱动
|
主题 - NexT.Pisces v5.1.4
沪ICP备2020033702号