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