mysql.sockが見つかりません


82

mysqlを再インストールする必要がありましたが、起動に問題があります。ソケット(mysql.sock)が見つかりません。問題は、どちらもできないことです。MacOSX 10.4ターミナルで、「:locate mysql.sock」と入力すると、に戻り/private/tmp/mysql.sockます。ソケットファイルがその場所に存在することは理にかなっていますが、実際には存在しません。

  1. ソケットファイルを見つけるにはどうすればよいですか?

  2. Locateが誤った場所を返している場合は、何らかのメモリとおそらくインデックスが必要です。そのインデックスを更新するにはどうすればよいですか?


1
/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
マキシマAlekz

回答:


139

あなたの質問の最初の部分に答えるために:

実行

% mysqladmin -p -u <user-name> variables

'socket'変数を確認します


1
できれば、この答えを完全に正しいものに変更します。私がこれをもっと早く知っていれば!
Steph Rose

50
ランmysqladmin variables。いつ何をしerror: 'Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)'ますか?:)
アレクサンダーウォリン2013年

@afEkenholmと同じエラーが発生し、解決策を見つけることができませんでした。sudo find / -name mysql.sockルートディレクトリから実行しましたが、システムのどこにもmysql.sockが見つかりませんでした。Mac OS10.7用の64ビットdmgファイルを使用してMySQLをインストールしました。現在マーベリックスを実行しています。
b_dubb 2014

@b_dubb私はあなたの状況と同じです、あなたはどのようにあなたの問題を解決しましたか?
MeganZhou 2014年

1
他のすべての操作を行わずにソケットパラメータをすばやく検索するには、次のようにします。grepソケット
BAR

49

これは私の問題を解決しました

mysql_config --socket

更新

mysql_configは、ファイルmysql.sockの場所を教えてくれますが、私の場合、ファイルは存在しませんでした。だから、my.cnfを削除しました:

sudo rm -rf /etc/my.cnf

そして、mysqlを再起動しました:

brew services restart mysql

ファイルが作成され、mysqlは正常に実行されています。


7
そのコマンドは、質問に答えるmysql.sockがどこにあるかを示します
Eugene Ramirez

3
このコマンドは、ファイルがどこにあるかを教えてくれません。これは、mysqlがそれを探している場所(--socketの構成設定)を示します。
morksinaanab 2014

私は持ってい ls: /etc/my.cnf: No such file or directoryないかもしれません私は最初にそれを作成する必要がありますか?
Abhi

あなたは時にファイルを持っていない場合/etc/my.cnfを見て試して/usr/loca/etc/my.cnf@Abhi -
rwcorbett

20

MySQLデーモンの起動時にソケットファイルが自動的に作成されます。

見つからない場合は、それを含むはずのディレクトリが存在しないか、他のファイルシステムの問題が原因でソケットが作成されていない可能性があります。

ファイルの場所を見つけるには、次を使用します。

% mysqld --verbose --help | grep ^socket

4
またはmysql--verbose --help | grep ^ socket
Ondrej Rafaj 2013

1
@Ondrejは確かに、クライアントがどこを見ていると思うかを教えてくれますか?実行のポイントはmysqldサーバーが実際にどこに配置したかを教えてくれるはずです!
Alnitak

私のXAMPPのインストールに私は見当もつかないシーン...背後に何が起こったのか... :)私はそれなしで試してみましたデーモンを見つけることができなかったし、それが働いた
オンドレイRafaj

20

これは私のためにそれを見つけました:

netstat -ln | grep mysql

Mac OSX


10

私の問題はmysql.sock-fileでもありました。

drupalのインストールプロセス中に、使用するデータベースを指定する必要がありましたが、データベースが見つかりませんでした

mkdir /var/mysql
ln -s /tmp/mysql.sock /var/mysql/mysql.sock

システムはmysql.sockを検索していますが、間違ったディレクトリにあります

あなたがしなければならないのはそれをリンクすることです;)

すべての重要な情報をグーグルで検索するのに多くの時間がかかりましたが、適応する方法を見つけるのに数時間もかかりましたが、今では結果を提示できます:D

ps:正確になりたい/tmp/mysql.sock-file場合は、(システム内にある場合は)php.ini(またはphp.default.ini)で指定されたディレクトリにリンクする必要があります。pdo_mysql.default_socket= ...


php.iniで変更した後pdo_mysql.default_socket、変更をロードするためにWebサーバーを再起動する必要がありますsudo apachectl restart
Szekelygobe 2018年

5

私は以下を使用して正確なパスを取得しました:

netstat -ln | grep -o -m 1 -E '\S*mysqld?\.sock'

これはパスを返すだけで、入力を必要としないため、シェルスクリプトで使用できる可能性があります。

これを機能させるには、MySQLが現在マシンで実行されている必要があります。MariaDBでも動作します。


素晴らしい答えです!これは、他の回答とは異なり、実際にソケットの場所を見つけます。
タイラークリスチャン

2

元の質問は、a)ファイルがどこにあるか、b)ファイルがどこで検索されているか(および、locateまたはgrepを実行したときにファイルが見つからない理由)についての混乱から生じているようです。Alnitakのポイントは、リンク先を見つけたいということだったと思いますが、grepではリンクが表示されませんよね?ファイルはリンクであるため、そこには存在しません。単なるポインタです。あなたはまだリンクをどこに置くかを知る必要があります。

私の靴下ファイルは間違いなく/ tmpにあり、私が得ているエラーは/ var / lib /(/ varだけでなく)でそれを探しています私は今/ varと/ var / libにリンクしていますが、それでもエラーが発生します「ソケット 'var / lib / mysql.sock'(2)を介してローカルMySQLサーバーに接続できません」。

エラー後の(2)に注意してください....別のスレッドで、これはソケットが実際に使用されようとしている可能性があることを意味しますが、ソケット自体に問題があるため、マシンを完全にシャットダウンします。ソケットが閉じます。その後、再起動すると修正されます。私はこれを試しましたが、うまくいきませんでした(再起動が速すぎるかどうか疑問に思いますか?本当に?)多分それは他の誰かのための解決策になるでしょう。


1
$ mysqladmin variables | grep sock

代わりにこれを試してください。これにより、要求された結果が出力され、無関係な情報が削除されます。



0

(Q1)ソケットファイルを見つけるにはどうすればよいですか?

ソケットファイルのデフォルトの場所は/tmp/mysql.sockです。システムのソケットファイルを見つけるには、これを使用します。

mysqladmin variables | grep socket

MySqlをインストールしたばかりの場合、サーバーが起動するまでmysql.sockファイルは作成されません。このコマンドを使用して開始します。

sudo launchctl load -F /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist

パスワードの入力を求められたら、ユーザー名rootまたはこのような他のユーザー名を渡すことができます。ターミナルはパスワードの入力を求めます。

mysqladmin --user root --password variables | grep socket

(Q2)ロケートインデックスを更新するにはどうすればよいですか?

このコマンドを使用して、検索データベースを更新します。

sudo /usr/libexec/locate.updatedb

0

Mac OS X10.11.6でも同じエラーが発生します。

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

ここや関連する質問で多くの苦悩と掘り下げを行った後、問題を解決することはできなかったので、戻ってインストールされたフォルダを削除しました。 brew install mysql

ほとんどのコマンドで同じエラーが発生しますが、これは機能します。

/usr/local/bin/mysqld

そして戻ります:

/ usr / local / bin / mysqld:接続の準備ができました。

バージョン: '5.7.12'ソケット: '/ tmp / mysql.sock'ポート:3306自作


0

mysqlソケットがまったく見つからなかったため、mysqlサーバーを再インストールしました(すべてのテーブルとphpmyadmin設定が保持されました)。コマンドは次のとおりです。

1)インストール

sudo apt-get install mysql-server

2)端末構成手順に従います

sudo mysql_secure_installation

3)ステータスを確認します:(「アクティブ:アクティブ(実行中)」を返す必要があります)

systemctl status mysql.service


0

残念ながら、私の場合、上記のどれもうまくいきませんでした。しかし、ついに私は解決策を見つけました。

mysql.sockファイルがどこにあるかを見つけるには、xampp managerを開き、MySQLを選択して、右側の[構成]をクリックします。設定パネルで[会議ファイルを開く]をクリックし、CMD + Fショートカットを押してmysql.sockを検索します。

私の場合、mysql.sockの所有者が変更されたため、chmod root:adminmysql.sockを使用してrootadminに戻す必要がありました。

その後、データベースにアクセスしました。


-4

質問1は役に立ちませんが、locateのファイルデータベースを更新するには、次のコマンドを実行します。

updatedb
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.