MySQL-Socket bezieht sich auf die Unix-Socket-Datei. Auf Unix-ähnlichen Plattformen gibt es zwei Möglichkeiten für den Client, eine Verbindung zum MySQL-Server herzustellen, nämlich die TCP/IP-Methode und die Socket-Datei-Verbindungsgeschwindigkeit Schneller als TCP/IP, kann aber nur für die Verbindung zu einem Server auf demselben Computer verwendet werden.
Die Betriebsumgebung dieses Tutorials: Linux5.9.8-System, MySQL8-Version, Dell G3-Computer.
Was ist ein MySQL-Socket?
.socket-Dateieinführung
socket ist eine Unix-Socket-Datei. Auf einer Unix-ähnlichen Plattform gibt es für den Client zwei Möglichkeiten, eine Verbindung zum MySQL-Server herzustellen, nämlich die TCP/IP-Methode und die Socket-Dateimethode. Unix-Socket-Dateiverbindungen sind schneller als TCP/IP, können jedoch nur zum Herstellen einer Verbindung zu einem Server auf demselben Computer verwendet werden.
Der Pfad und der Name der Socket-Datei können durch Festlegen der Socket-Variablen konfiguriert werden. Der Standardwert ist /tmp/mysql.sock (bei einigen Verteilungsformaten kann das Verzeichnis unterschiedlich sein). Die Referenzkonfiguration lautet wie folgt:
# 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
Copy
Wenn wir uns den obigen Verbindungsstatus ansehen, können wir sehen, dass MySQL lokal über einen Socket verbunden werden kann. Wenn bei der lokalen Anmeldung der [Client]-Teil der my.cnf-Konfigurationsdatei nicht den Socket-Dateipfad angibt, sucht mysql standardmäßig nach /tmp/mysql.sock. Daher wird beim Starten des mysqld-Dienstes der generierte Wenn dies der Fall ist, wird beim Anmelden möglicherweise ein Fehler gemeldet (FEHLER 2002 (HY000): Verbindung zum lokalen MySQL-Server kann nicht über Socket „/tmp/mysql.sock“ hergestellt werden). Tatsächlich kann dieses Problem durch die Konfiguration bestimmter Pfade sowohl im [mysqld]-Teil als auch im [client]-Teil vermieden werden. Sie können auch eine weiche Verbindung unter dem tmp-Pfad herstellen, wie zum Beispiel: ln -s /data/mysql/tmp/mysql .sock /tmp/mysql.sock . Ebenso müssen die Berechtigungen für das Socket-Dateiverzeichnis an den MySQL-Systembenutzer freigegeben werden.
Empfohlenes Lernen: „MySQL-Video-Tutorial“
Das obige ist der detaillierte Inhalt vonWas ist ein MySQL-Socket?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!