mysql socket是指Unix套接字檔案;在類別unix平台,客戶端連接MySQL服務端的方式有兩種,分別是TCP/IP方式與socket套接字檔案方式;Unix套接字檔案連線的速度比TCP/IP快,但是只能連接到同一台電腦上的伺服器使用。
本教學操作環境:linux5.9.8系統、mysql8版本、Dell G3電腦。
mysql socket是什麼?
.socket文件介紹
socket 即Unix 套接字文件,在類別unix 平台,客戶端連接MySQL 服務端的方式有兩種,分別是TCP/IP 方式與socket 套接字檔案方式。 Unix 套接字檔案連線的速度比 TCP/IP 快,但只能連接到同一台電腦上的伺服器使用。
透過設定 socket 變數可配置套接字檔案路徑及名稱,預設值為 /tmp/mysql.sock (對於某些發行格式,目錄可能有所不同)。參考設定如下:
# my.cnf 配置文件 [mysqld] socket = /data/mysql/tmp/mysql.sock [client] socket = /data/mysql/tmp/mysql.sock # 查看对应目录下的socket文件 root@localhost tmp]# ls -lh total 8.0K srwxrwxrwx 1 mysql mysql 0 Jun 10 15:19 mysql.sock -rw------- 1 mysql mysql 6 Jun 10 15:19 mysql.sock.lock # 通过 -S 命令指定socket登录 [root@localhost ~]# mysql -uroot -pxxxx -S /data/mysql/tmp/mysql.sock mysql: [Warning] Using a password on the command line interface can be insecure. Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 12 Server version: 8.0.22 MySQL Community Server - GPL Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> status -------------- mysql Ver 8.0.22 for Linux on x86_64 (MySQL Community Server - GPL) Connection id: 12 Current database: Current user: root@localhost SSL: Not in use Current pager: stdout Using outfile: '' Using delimiter: ; Server version: 8.0.22 MySQL Community Server - GPL Protocol version: 10 Connection: Localhost via UNIX socket Server characterset: utf8mb4 Db characterset: utf8mb4 Client characterset: utf8mb4 Conn. characterset: utf8mb4 UNIX socket: /data/mysql/tmp/mysql.sock Binary data as: Hexadecimal Uptime: 1 hour 27 min 31 sec 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影片教學》
以上是mysql socket是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!