web-dev-qa-db-ja.com

mysqld.sockには何が含まれている必要がありますか?

MySQL 5.1をインストール(または再インストール)したときに、_/var/run/mysqld/mysqld.sock_ソケットファイルがコンピューター上にない理由を誰かが知っていますか?

現在、mysqldを使用してサーバーを起動しようとすると、Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) when trying to connectのようなエラーが発生しますが、(ubuntuフォーラムで提案されている)その名前の空のファイルを作成できませんでした。

少し前にnattyにアップグレードするまで、mysqlとpostgresの両方が正常に機能していました。私は何が起こっているのかを理解するために両方のデータベースを歩くのに何時間も費やしました。 postgresをあきらめることはできますが、mysqlの作業コピーがないと作業できません。

奇妙な部分:私はKubuntuを使用しています。私の理解では、KDEはmysqlを使用してユーザー権限などを格納しています。私は奇妙な権限の問題を経験していません。これは(どういうわけか?)MySQLが実際に機能していることを意味するのでしょうか?

多分これらのソケットファイルはnattyの別の場所に住んでいますか? osを新鮮に再インストールする方が簡単でしょうか?この時点で、私は時間の浪費をやめる提案があればそれを受け入れます。

24
egbutter

ソケットファイルは実際にはデータを含んでおらず、それを転送します。これは、特別なシステムコール/コマンドで作成された特別で珍しいタイプのファイルです。通常のファイルではありません。

これは、サーバーとクライアントがリクエストとデータの接続と交換に使用できるパイプのようなものです。また、ローカルでのみ使用されます。その重要性は、ファイルシステム内の合意されたランデブー場所としてのみです。

プレーンな古いファイルを作成してその場所に置くと、サーバーが実際にファイルを作成するのを妨害し、ローカルクライアントがサーバーに接続できなくなる可能性があります。

私がお勧めするのは、その場所に置いたファイルをすべて削除することです。特別なソケットファイルはサーバーによって作成されます。

19
Paul

Host=localhostを指定すると、mysqlクライアントは、.sockファイルを必要とするUNIX名前付きパイプを使用してmysqlサーバーにログインしようとします。

これは、Host = 127.0.0.1を指定することで回避できます。これにより、mysqlクライアントはTCP=を使用してサーバーに接続します。

MySQLのドキュメント から取得:

mysql --Host=127.0.0.1 --port=3306 --user=your_uname --password=your_pass
21
sccott

ソケットは、データストレージではなく、読み取りおよび書き込みによるデータ送信に使用される特別な疑似ファイルです。

ソケットファイルは、サービスの開始時に作成され、サービスの終了時に削除されます。ファイルの場所は、次のように/etc/my.cnfで定義されます。

[mysqld]
socket=/var/run/mysql/mysql.sock
14
Michael

私の場合、mysqld_safeを実行すると、新しいmysqld.sockファイルが作成されました。

$ cd /etc/init.d/
$ mysqld_safe

おそらくプロンプトは表示されませんが、セッションを再起動すると、mysqld.sockファイルがどこかにあります。で見つける

$ Sudo find / -type s | grep mysqld.sock
8
aviggiano

不足しているmysqld.sockでも同じ問題が発生しました。私はmysqlを含むディレクトリ、つまり私の場合は/usr/binに行きました。次に、コマンドを発行しました

mysql mysql --Host=localhost --password=whatever --port=3306

二重mysqlはタイプミスではなく、mysqlは新しいMySQLインストールに常に存在するデータベースです。 --Host--password、または--portが必要かどうかはわかりませんが、これらのパラメーターを使用して機能するため、それらを含めています。 MySQLが起動したら、rootのパスワードを設定するためにユーザーテーブルに入りました。 MySQLが起動すると、不足しているソケットファイルが作成されます。私が何日も苦労してきたので、これが誰かを助けることを願っています.

2
James

Nginx php-fastcgiを使用していて502 Bad Gatewayエラーが発生した場合は、nginx設定ファイルで仮想ホスト設定を確認する必要があります。 fastcgi_passパラメータを設定または修正する必要があります。fastcgi_passは、nginxとphp CGI間のソケット接続を設定する変数です。

もう1つの問題点は、バイナリスタータースクリプトが次のエントリ(重要)で開いていない可能性があることです:nano /usr/bin/php-fastcgi

SOCKET=/var/run/php-fastcgi/php-fastcgi.socket
PIDFILE=/var/run/php-fastcgi/php-fastcgi.pid

私のスタータースクリプト/ usr/bin/php-fastcgiの完全な内容:

#!/bin/bash

FASTCGI_USER=www-data
FASTCGI_GROUP=www-data
SOCKET=/var/run/php-fastcgi/php-fastcgi.socket
PIDFILE=/var/run/php-fastcgi/php-fastcgi.pid
CHILDREN=6
PHP5=/usr/bin/php5-cgi

/usr/bin/spawn-fcgi -s $SOCKET -P $PIDFILE -C $CHILDREN -u $FASTCGI_USER -g $FASTCGI_GROUP -f $PHP5
1
Aysad Kozanoglu