mysql 소켓은 Unix 소켓 파일을 의미합니다. Unix 계열 플랫폼에서는 클라이언트가 MySQL 서버에 연결하는 두 가지 방법, 즉 TCP/IP 방법과 Unix 소켓 속도가 있습니다. 파일 연결 TCP/IP보다 빠르지만 동일한 컴퓨터의 서버에 연결하는 데에만 사용할 수 있습니다.
이 튜토리얼의 운영 환경: linux5.9.8 시스템, mysql8 버전, Dell G3 컴퓨터.
mysql 소켓이란 무엇입니까?
.socket 파일 소개
socket은 Unix 소켓 파일입니다. Unix 계열 플랫폼에서 클라이언트가 MySQL 서버에 연결하는 방법에는 TCP/IP 방식과 소켓 파일 방식이 있습니다. Unix 소켓 파일 연결은 TCP/IP보다 빠르지만 동일한 컴퓨터의 서버에 연결하는 데에만 사용할 수 있습니다.
소켓 파일 경로와 이름은 소켓 변수를 설정하여 구성할 수 있습니다. 기본값은 /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
Copy
위 연결 상태를 보면 소켓을 통해 로컬에서 MySQL을 연결할 수 있는 것을 알 수 있습니다. 로컬로 로그인할 때 my.cnf 구성 파일의 [client] 부분에 소켓 파일 경로가 지정되어 있지 않으면 mysql은 기본적으로 /tmp/mysql.sock을 찾습니다. 따라서 mysqld 서비스가 시작되면 생성됩니다. 소켓 파일이 기본 경로가 아닌 경우 로그인 시 오류가 보고될 수 있습니다(ERROR 2002 (HY000): 소켓 '/tmp/mysql.sock'을 통해 로컬 MySQL 서버에 연결할 수 없습니다). 실제로 [mysqld] 부분과 [client] 부분 모두에 특정 경로를 구성하면 이 문제를 피할 수 있습니다. ln -s /data/mysql/tmp/mysql과 같은 tmp 경로 아래에 소프트 연결을 설정할 수도 있습니다. .sock /tmp/mysql.sock . 마찬가지로, 소켓 파일 디렉터리 권한은 mysql 시스템 사용자에게 해제되어야 합니다.
추천 학습: "MySQL 비디오 튜토리얼"
위 내용은 mysql 소켓이 뭐야?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!