>데이터 베이스 >MySQL 튜토리얼 >mysql 소켓이 뭐야?

mysql 소켓이 뭐야?

藏色散人
藏色散人원래의
2023-04-03 15:22:492507검색

mysql 소켓은 Unix 소켓 파일을 의미합니다. Unix 계열 플랫폼에서는 클라이언트가 MySQL 서버에 연결하는 두 가지 방법, 즉 TCP/IP 방법과 Unix 소켓 속도가 있습니다. 파일 연결 TCP/IP보다 빠르지만 동일한 컴퓨터의 서버에 연결하는 데에만 사용할 수 있습니다.

mysql 소켓이 뭐야?

이 튜토리얼의 운영 환경: 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.