le socket mysql fait référence au fichier socket Unix ; sur les plates-formes de type Unix, il existe deux façons pour le client de se connecter au serveur MySQL, à savoir la méthode TCP/IP et la méthode du fichier socket ; Plus rapide que TCP/IP, mais ne peut être utilisé que pour se connecter à un serveur sur le même ordinateur.
L'environnement d'exploitation de ce tutoriel : système linux5.9.8, version mysql8, ordinateur Dell G3.
Qu'est-ce que le socket MySQL ?
.socket introduction au fichier
socket est un fichier socket Unix. Sur une plate-forme de type Unix, le client dispose de deux manières de se connecter au serveur MySQL, à savoir la méthode TCP/IP et la méthode du fichier socket. Les connexions de fichiers socket Unix sont plus rapides que TCP/IP, mais ne peuvent être utilisées que pour se connecter à un serveur sur le même ordinateur.
Le chemin et le nom du fichier socket peuvent être configurés en définissant la variable socket. La valeur par défaut est /tmp/mysql.sock (pour certains formats de distribution, le répertoire peut être différent). La configuration de référence est la suivante :
# 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
Copie
En regardant l'état de connexion ci-dessus, nous pouvons voir que MySQL peut être connecté localement via socket. Lors de la connexion locale, si la partie [client] du fichier de configuration my.cnf ne spécifie pas le chemin du fichier socket, mysql recherchera /tmp/mysql.sock par défaut. Par conséquent, lorsque le service mysqld est démarré, le fichier généré. Le fichier socket n'est pas le chemin par défaut. Si tel est le cas, une erreur peut être signalée lors de la connexion (ERREUR 2002 (HY000) : impossible de se connecter au serveur MySQL local via le socket '/tmp/mysql.sock'). En fait, la configuration de chemins spécifiques à la fois dans la partie [mysqld] et dans la partie [client] peut éviter ce problème. Vous pouvez également établir une connexion logicielle sous le chemin tmp, telle que : ln -s /data/mysql/tmp/mysql. .chaussette /tmp/mysql.sock . De même, les autorisations du répertoire de fichiers socket doivent être accordées à l'utilisateur du système MySQL.
Apprentissage recommandé : "Tutoriel vidéo MySQL"
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!