[解決済み] error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)' -- Missing /var/run/mysqld/mysqld.sock
質問
私の問題は、私のmysqlのインストールでrootとしてログインできなくなったことから始まりました。 私はパスワードなしでmysqlを実行しようとしていました。
# mysqld_safe --skip-grant-tables &
プロンプトが戻らなくなるんです。私は、次のことをしようとしていました。 パスワードを回復するための手順は以下のとおりです。 .
画面はちょうどこのような感じです。
root@jj-SFF-PC:/usr/bin# mysqld_safe --skip-grant-tables
120816 11:40:53 mysqld_safe Logging to syslog.
120816 11:40:53 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
というメッセージが表示され、パスワードをリセットするためのSQLコマンドの入力を開始するプロンプトが表示されないのです。
を押して終了させると CTRL + C というメッセージが表示されます。
error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)'
Check that mysqld is running and that the socket: '/var/run/mysqld/mysqld.sock' exists!
コマンドを再試行して長く放置しておくと、確かに次のような一連のメッセージが表示されます。
root@jj-SFF-PC:/run/mysqld# 120816 13:15:02 mysqld_safe Logging to syslog.
120816 13:15:02 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
120816 13:16:42 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
[1]+ Done mysqld_safe --skip-grant-tables
root@jj-SFF-PC:/run/mysqld#
とやってrootでログインしようとすると。
# mysql -u root
次のようなエラーメッセージが表示されます。
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
確認したところ
/var/run/mysqld/mysqld.sock
ファイルが存在しないのです。フォルダは存在しますが、ファイルは存在しません。
また、これが役に立つかどうかわかりませんが、次のように実行しました。
find / -name mysqld
と出てきました。
/var/run/mysqld - folder
/usr/sbin/mysqld - file
/run/mysqld - folder
私はLinuxとMySQLの初心者なので、これが正常かどうかはわかりません。しかし、念のためこの情報を載せておきます。
ついにmysqlのアンインストールと再インストールをすることにしました。
apt-get remove mysql-server
apt-get remove mysql-client
apt-get remove mysql-common
apt-get remove phpmyadmin
上記と同じ順番で全パッケージを再インストールした後、phpmyadminのインストール中に、同じエラーが発生しました。
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
そこで、再度アンインストール/再インストールを試みました。今回は、パッケージをアンインストールした後、すべてのmysqlファイルとディレクトリの名前も手動で変更して
mysql.bad
をそれぞれの場所に配置しました。
/var/lib/mysql
/var/lib/mysql/mysql
/var/log/mysql
/usr/lib/perl5/DBD/mysql
/usr/lib/perl5/auto/DBD/mysql
/usr/lib/mysql
/usr/bin/mysql
/usr/share/mysql
/usr/share/dbconfig-common/internal/mysql
/etc/init.d/mysql
/etc/apparmor.d/abstractions/mysql
/etc/mysql
そして、再インストールを試みると
mysql-server
と
mysql-client
をもう一度。 しかし、パスワードの入力が促されないことに気づきました。 管理者パスワードを要求するはずではないのでしょうか?
解決方法を教えてください。
システム上のすべてのソケットファイルを検索するには、以下を実行します。
sudo find / -type s
私のMysqlサーバーシステムは、ソケットを以下の場所でオープンしていました。
/var/lib/mysql/mysql.sock
ソケットが開かれている場所がわかったら、ソケットファイルのパスを /etc/my.cnf ファイルに追加または編集してください。
socket=/var/lib/mysql/mysql.sock
コマンドライン実行ファイルを起動したシステム起動スクリプトで、フラグを指定することがあります。
--socket=path
. このフラグが my.cnf の場所を上書きする可能性があり、その結果 my.cnf ファイルが示す場所にソケットが見つからなくなる可能性があります。 そして、mysqlコマンドラインクライアントを実行しようとすると、ソケットを見つけるためにmy.cnfを読みますが、サーバーが作成した場所から外れているため、ソケットを見つけることができません。 したがって、ソケットがどこにあるか気にしない限り、my.cnfを一致するように変更するだけでうまくいくはずです。
次に、mysqld プロセスを停止します。 この方法は、システムによって異なります。
もし、あなたがLinuxシステムのスーパーユーザーで、あなたのMysqlのセットアップが使用している特定の方法がわからない場合は、次のいずれかを試してみてください。
-
service mysqld stop
-
/etc/init.d/mysqld stop
-
mysqladmin -u root -p shutdown
-
システムによっては、mysql を停止するエレガントな方法が設定されていない(または何らかの理由で mysql が応答しない)ため、どちらかを使用して mysql を強制終了することができます。
-
ワンステップ
pkill -9 mysqld
-
2段階(最も好ましくない)。
-
mysqlのプロセスIDを以下のどちらかで検索してください。
pgrep mysql
またはps aux | grep mysql | grep -v grep
-
プロセスIDが
4969
で終了させます。kill -9 4969
-
mysqlのプロセスIDを以下のどちらかで検索してください。
-
ワンステップ
この後、pid ファイルを
/var/run/mysqld/
を削除してください。
ソケットのパーミッションが、mysqldの実行ユーザが読み書きができるようになっていることを確認してください。 簡単なテストとしては、完全な読み取り/書き込みができるようにソケットを開き、それでも動作するかどうかを確認することです。
chmod 777 /var/run/mysqld/mysqld.sock
これで問題が解決した場合は、セキュリティ設定に基づいて、必要に応じてソケットの権限と所有権を調整することができます。
また、ソケットが存在するディレクトリは、mysqldプロセスを実行しているユーザが到達可能である必要があります。
関連
-
MySQL演算子(and, or, in, not)の具体的な使用方法
-
面接では選択式で聞かれましたが......。.for updateはテーブルをロックするか、行をロックするか?
-
MySQLの起動エラー:ERROR 2003 (HY000)。localhost'上のMySQLサーバーに接続できない(10061)
-
mysql がエラーを報告します。不明な文字セットです。'utf8mb4'
-
Mysqlの使用中に発生したエラーの一部
-
[解決済み] KEYキーワードは何を意味するのか?
-
[解決済み] MySQLのAUTO_INCREMENTをリセットする方法
-
[解決済み] ブーリアン値を格納するために使用するMySQLデータ型
-
[解決済み] MySQLデータベースのテーブルのサイズを取得する方法は?
-
[解決済み] ソケット '/var/mysql/mysql.sock' を介してローカルの MySQL サーバーに接続できない (38)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
SQL基本クエリステートメント
-
MysqlからElasticsearchにデータを同期させる方法を説明します。
-
[解決済み】SQLサーバーのテンポラリーテーブルで「すでに名前のついたオブジェクトがあります」エラーが発生する。
-
SQLステートメントエラーです。オペランドには 1 つのカラムを含める必要があります [括弧を追加せずに複数のフィールドをクエリする
-
msql クエリでのエラー 'where 節' の不明な列 'yellow fruit'
-
Unknown character set.を解決する。MySQLデータベースインポート時の'utf8mb4'エラーの解消
-
PostMan レポート エラー: 接続 ECONNREFUSED 127.0.0.1:port number
-
Mysqlの使用中に発生したエラーの一部
-
[解決済み] ユーザー 'root'@'localhost' (パスワード: YES を使用) のアクセス拒否 - 特権がない?
-
[解決済み】ソケット '/var/lib/mysql/mysql.sock' を介してローカルの MySQL サーバーに接続できない (2)。