Heim >Datenbank >MySQL-Tutorial >Was ist ein MySQL-Socket?

Was ist ein MySQL-Socket?

藏色散人
藏色散人Original
2023-04-03 15:22:492506Durchsuche

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.

Was ist ein MySQL-Socket?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn