mysqlソケットとは何ですか

藏色散人
藏色散人オリジナル
2023-04-03 15:22:492511ブラウズ

mysql ソケットは Unix ソケット ファイルを指します。Unix のようなプラットフォームでは、クライアントが MySQL サーバーに接続する方法は 2 つあります。つまり、TCP/IP 方式とソケット ソケット ファイル方式です。Unixソケット ファイル接続は TCP/IP より高速ですが、同じコンピュータ上のサーバーに接続する場合にのみ使用できます。

mysqlソケットとは何ですか

このチュートリアルの動作環境: linux5.9.8 システム、mysql8 バージョン、Dell G3 コンピューター。

mysql ソケットとは何ですか?

.socket ファイルの概要

socket は Unix ソケット ファイルです。Unix のようなプラットフォームでは、クライアントがソケットに接続するには 2 つの方法があります。 MySQLサーバーはそれぞれTCP/IP方式とソケットファイル方式です。 Unix ソケット ファイル接続は TCP/IP よりも高速ですが、同じコンピュータ上のサーバーに接続する場合にのみ使用できます。

ソケット ファイルのパスと名前は、socket 変数を設定することで設定できます。デフォルト値は /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 を検索します。ソケット ファイルがデフォルトのパスではない場合、ログイン時にエラーが報告されることがあります (エラー 2002 (HY000): ソケット '/tmp/mysql.sock' を介してローカル MySQL サーバーに接続できません)。実際、[mysqld] 部分と [client] 部分の両方で特定のパスを設定すると、この問題を回避できます。また、ln -s /data/mysql/tmp/mysql のように、tmp パスの下でソフト接続を確立することもできます。 .sock /tmp/mysql.sock 。同様に、ソケット ファイル ディレクトリのアクセス許可を mysql システム ユーザーに解放する必要があります。

推奨学習: 「MySQL ビデオ チュートリアル

以上がmysqlソケットとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。