Mysqlを再インストールする必要があり、起動に問題があります。ソケット(mysql.sock)が見つかりません。問題はどちらもできないことです。私のMac OS X 10.4端末では、次のように入力します:locate mysql.sock
、そして戻ってきます/private/tmp/mysql.sock
。ソケットファイルがその場所に存在することは理にかなっていますが、実際には存在しません。
ソケットファイルを見つけるにはどうすればよいですか?
Locateが誤った位置を返している場合、何らかのメモリとおそらくインデックスが必要です。そのインデックスを更新するにはどうすればよいですか?
あなたの質問の最初の部分に答えるために:
走る
% mysqladmin -p -u <user-name> variables
「ソケット」変数を確認します
これで問題が解決しました
mysql_config --socket
[〜#〜] update [〜#〜]
mysql_configはmysql.sockファイルの場所を教えてくれますが、私の場合はファイルは存在しませんでした。そのため、my.cnfを削除しました。
Sudo rm -rf /etc/my.cnf
そして、mysqlを再起動しました:
brew services restart mysql
ファイルが作成され、mysqlは正常に動作しています。
ソケットファイルは、MySQLデーモンの起動時に自動的に作成されます。
見つからない場合は、おそらくそれを含むはずのディレクトリが存在しないか、他のファイルシステムの問題によりソケットの作成が妨げられています。
ファイルの場所を見つけるには、次を使用します。
% mysqld --verbose --help | grep ^socket
これは私のためにそれを見つけました:
netstat -ln | grep mysql
Mac OSX
私の問題は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= ...
私は正確なパスを取得しました:
netstat -ln | grep -o -m 1 -E '\S*mysqld?\.sock'
これはパスを返すだけで、入力を必要としないため、シェルスクリプトで潜在的に使用できます。
これが機能するには、MySQLが現在マシン上で実行されている必要があります。 MariaDBでも機能します。
元の質問は、a)ファイルがどこにあり、b)ファイルがどこにあるのか(そして、locateまたはgrepを行うときにそこに見つからない)についての混乱から生じているようです。 Alnitakのポイントは、リンク先を見つけたいということだったと思いますが、grepではリンクが表示されませんよね?ファイルはリンクであり、単なるポインタであるため、そこには存在しません。あなたはまだリンクを置く場所を知る必要があります。
私の靴下ファイルは間違いなく/ tmpにあり、エラーは/ var/lib /(/ varだけでなく)で探しています。/varと/ var/libにリンクしましたが、まだエラーが表示されます。 「ソケット 'var/lib/mysql.sock'を介してローカルMySQLサーバーに接続できません(2)」.
エラーの後の(2)に注意してください....別のスレッドで、ソケットが実際に使用されようとしている可能性があることがわかりましたが、ソケット自体に何か問題があります-したがって、マシンをシャットダウンする-完全に-ソケットが閉じます。その後、再起動すると修正されます。これを試してみましたが、うまくいきませんでした(すぐに再起動しすぎないかと疑問に思いますか?本当に?).
$ mysqladmin variables | grep sock
代わりにこれを試してください。これは要求された結果を出力し、無関係な情報を取り除きます。
Mac OS X 10.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 Homebrew
(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
ロケートのデータベースを更新するために実行しました
/usr/libexec/locate.updatedb
Mysqlソケットがまったく見つからなかったため、mysqlサーバーを再インストールしました(すべてのテーブルとphpmyadmin設定が保持されていました)。コマンドは次のとおりです。
1)インストール
Sudo apt-get install mysql-server
2)端末構成手順に従う
須藤mysql_secure_installation
3)ステータスの確認:(「アクティブ:アクティブ(実行中)」を返す必要があります)
systemctl status mysql.service
残念ながら、私の場合は上記のどれもうまくいきませんでした。しかし、最終的に解決策を見つけました。
Mysql.sockファイルの場所を見つけるには、xamppマネージャーを開き、MySQLを選択して、右側の[構成]をクリックします。設定パネルで[設定ファイルを開く]をクリックし、CMD + Fショートカットを押してmysql.sockを検索します。
私の場合、mysql.sockの所有者が変更されました。chmodroot:admin mysql.sockを使用して、root管理者に戻す必要がありました。
その後、データベースにアクセスしました。