mysql socket指的是什么

数据库   发布日期:2024年11月16日   浏览次数:415

这篇“mysql socket指的是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“mysql socket指的是什么”文章吧。

mysql socket是指Unix套接字文件;在类unix平台,客户端连接MySQL服务端的方式有两种,分别是TCP/IP方式与socket套接字文件方式;Unix套接字文件连接的速度比TCP/IP快,但是只能连接到同一台计算机上的服务器使用。

.socket文件介绍

socket 即 Unix 套接字文件,在类 unix 平台,客户端连接 MySQL 服务端的方式有两种,分别是 TCP/IP 方式与 socket 套接字文件方式。Unix 套接字文件连接的速度比 TCP/IP 快,但是只能连接到同一台计算机上的服务器使用。

通过设置 socket 变量可配置套接字文件路径及名称,默认值为 /tmp/mysql.sock (对于某些发行格式,目录可能有所不同)。参考配置如下:

  1. # my.cnf 配置文件
  2. [mysqld]
  3. socket = /data/mysql/tmp/mysql.sock
  4. [client]
  5. socket = /data/mysql/tmp/mysql.sock
  6. # 查看对应目录下的socket文件
  7. root@localhost tmp]# ls -lh
  8. total 8.0K
  9. srwxrwxrwx 1 mysql mysql 0 Jun 10 15:19 mysql.sock
  10. -rw------- 1 mysql mysql 6 Jun 10 15:19 mysql.sock.lock
  11. # 通过 -S 命令指定socket登录
  12. [root@localhost ~]# mysql -uroot -pxxxx -S /data/mysql/tmp/mysql.sock
  13. mysql: [Warning] Using a password on the command line interface can be insecure.
  14. Welcome to the MySQL monitor. Commands end with ; or g.
  15. Your MySQL connection id is 12
  16. Server version: 8.0.22 MySQL Community Server - GPL
  17. Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
  18. Oracle is a registered trademark of Oracle Corporation and/or its
  19. affiliates. Other names may be trademarks of their respective
  20. owners.
  21. Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
  22. mysql> status
  23. --------------
  24. mysql Ver 8.0.22 for Linux on x86_64 (MySQL Community Server - GPL)
  25. Connection id: 12
  26. Current database:
  27. Current user: root@localhost
  28. SSL: Not in use
  29. Current pager: stdout
  30. Using outfile: ''
  31. Using delimiter: ;
  32. Server version: 8.0.22 MySQL Community Server - GPL
  33. Protocol version: 10
  34. Connection: Localhost via UNIX socket
  35. Server characterset: utf8mb4
  36. Db characterset: utf8mb4
  37. Client characterset: utf8mb4
  38. Conn. characterset: utf8mb4
  39. UNIX socket: /data/mysql/tmp/mysql.sock
  40. Binary data as: Hexadecimal
  41. Uptime: 1 hour 27 min 31 sec
  42. Threads: 3 Questions: 27 Slow queries: 0 Opens: 135 Flush tables: 3 Open tables: 56 Queries per second avg: 0.005

复制

查看上述连接状态可知,MySQL 在本地可以通过 socket 方式连接。在本地登录时,如果 my.cnf 配置文件中的 [client] 部分没有指定 socket 文件路径,mysql 默认会去寻找 /tmp/mysql.sock ,所以如果 mysqld 服务启动的时候,生成的 socket 文件不是默认路径的话,登陆可能会报错(ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock')。其实 [mysqld] 部分及 [client] 部分都配置具体路径可避免此问题,也可以在 tmp 路径下建立软连接,如:ln -s /data/mysql/tmp/mysql.sock /tmp/mysql.sock 。同样的,socket 文件目录权限要对 mysql 系统用户放开。

以上就是mysql socket指的是什么的详细内容,更多关于mysql socket指的是什么的资料请关注九品源码其它相关文章!