首頁 >資料庫 >mysql教程 >mysql socket是什麼

mysql socket是什麼

藏色散人
藏色散人原創
2023-04-03 15:22:492475瀏覽

mysql socket是指Unix套接字檔案;在類別unix平台,客戶端連接MySQL服務端的方式有兩種,分別是TCP/IP方式與socket套接字檔案方式;Unix套接字檔案連線的速度比TCP/IP快,但是只能連接到同一台電腦上的伺服器使用。

mysql socket是什麼

本教學操作環境: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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn