mysql ソケットは Unix ソケット ファイルを指します。Unix のようなプラットフォームでは、クライアントが MySQL サーバーに接続する方法は 2 つあります。つまり、TCP/IP 方式とソケット ソケット ファイル方式です。Unixソケット ファイル接続は TCP/IP より高速ですが、同じコンピュータ上のサーバーに接続する場合にのみ使用できます。
このチュートリアルの動作環境: 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 サイトの他の関連記事を参照してください。