web-dev-qa-db-ja.com

エラー:「ソケットを介してローカルのMySQLサーバーに接続できません」/var/run/mysqld/mysqld.sock(2) - /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-servermysql-clientを再インストールしようとしました。しかし、パスワードの入力を要求されないことに気付きました。管理者パスワードを要求するのではないでしょうか。

262
dot

システム上のすべてのソケットファイルを見つけるには、次のコマンドを実行します。

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セットアップが使用する特定の方法が分からないならば、次のうちの1つを試してください:

  • service mysqld stop
  • /etc/init.d/mysqld stop
  • mysqladmin -u root -p shutdown
  • いくつかのシステムはmysqlを停止するための洗練された方法を持つように設定されておらず(あるいは何らかの理由でmysqlが応答しない)、mysqlを強制的に終了させることができます。
    • 一歩:pkill -9 mysqld
    • 2段階(最も好ましくない):
      • pgrep mysqlまたはps aux | grep mysql | grep -v grepを使用してmysqlのプロセスIDを見つけます。
      • プロセスIDが4969であると仮定すると、kill -9 4969で終了します。

これを行った後は、/var/run/mysqld/でpidファイルを探してそれを削除したいかもしれません。

あなたのソケットに対するパーミッションが、mysqldが実行しているどのユーザでも読み書きできるようになっていることを確認してください。簡単なテストは、それを完全に読み書きできるように開いて、まだ動作するかどうかを確認することです。

chmod 777 /var/run/mysqld/mysqld.sock

それでも問題が解決する場合は、セキュリティ設定に基づいて必要に応じてソケットのアクセス許可と所有権を調整できます。

また、ソケットが存在するディレクトリには、mysqldプロセスを実行しているユーザーがアクセスできる必要があります。

162
Ray

このコマンドを試してください、

Sudo service mysql start
207
Joe Cheng

このエラーはmysqlの複数のインストールが原因で発生します。コマンドを実行します。

ps -A|grep mysql

以下を使用してプロセスを強制終了します。

Sudo pkill mysql

それからコマンドを実行します。

ps -A|grep mysqld

次のコマンドを実行してこのプロセスを終了します。

Sudo pkill mysqld

これで、次のコマンドを実行するだけで完全に設定できました。

service mysql restart
mysql -u root -p

再び非常によく働いているMySQLを持っている

103
Hammad Raza

解決策はずっと簡単です。

  1. まず、(ターミナルで "Sudo find/-type s"を使って)mysql.sockファイルがある場所を探します。私の場合は/opt/lampp/var/mysql/mysql.sockにありました
  2. ターミナルを起動してSudo Nautilusを発行する
    これはあなたのファイルマネージャをスーパーユーザ特権​​で起動します
  3. Nautilusから、mysql.sockファイルがある場所に移動します。
  4. ファイルを右クリックして Make Link を選択します。
  5. リンクファイルの名前をmysqld.sockに変更してから、ファイルを右クリックして 切り取り it
  6. /var/runに移動してmysqldという名前のフォルダーを作成し、それを入力してください
  7. 今すぐ右クリックして 貼り付け リンクファイル
  8. ほら!これでmysqld.sock :)に/var/run/mysqld/mysqld.sockファイルができました。
36
Ioan Stef

インストール後にMySQLサービスを起動するだけです。

Ubuntuの場合:

Sudo service mysql start;

CentOSまたはRHELの場合:

Sudo service mysqld start;
24
Pratik Patil

Mysqlデータベースが正しくインストールされていない場合、およびこのエラーが発生した場合は、端末内、サーバー内で実行してください。 var/run/mysqld/mysqld.sock '(2)'。

MySqlを停止します

Sudo /etc/init.d/mysqld stop

再起動または起動します

Sudo /etc/init.d/mysqld restart or Sudo /etc/init.d/mysqld start

このようなリンクを作成してシステムに渡してください

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

mysqlを設定するためにあなたがする必要があるすべてのプロセスを導く安全なインストールを実行しなさい

/usr/bin/mysql_secure_installation
12
coolcool1994

私は同じエラーに直面し、それがパッケージのアップグレードによるものであることがわかったので、私のシステムを再起動した後、私はエラーを解決しました。

私は、SQLライブラリ/パッケージのアップデートがエラーを起こしたためだと思うので、アップグレードをしているならこれを試してください:)

11

MySQL 5.6および5.7のUbuntuには、MySQLサービスが停止または再起動されるたびにvar/run/mysqld/が消えるというバグがあります。これはMySQLの実行をまったく妨げます。この回避策を見つけました。これは完璧ではありませんが、少なくとも/ rebootを停止した後に実行されます。

mkdir /var/run/mysqld/
chown mysqld /var/run/mysqld/
11
motorbaby

この問題には多くの理由がありますが、時々mysqlサーバーを再起動するだけで問題が解決します。

Sudo service mysql restart
8
Leopathu

ユーザーロードステップの答えは私のために働きました。時には/etc/mysql/my.cnf add行でファイルを編集する必要があります

[client]
password = your_mysql_root_password
port  = 3306
Host  = 127.0.0.1
socket  = /var/lib/mysql/mysql.sock
6
user3002884

UbuntuでXAMPPを使う:

  1. mysqld inside /var/run ディレクトリという名前のフォルダを作成します。あなたはそれをSudo mkdir /var/run/mysqldコマンドを使って達成することができます。

  2. XAMPPサーバの起動時に作成される mysql.sock ファイルへのシンボリックリンクを作成します。あなたはコマンドSudo ln -s /opt/lampp/var/mysql/mysql.sock /var/run/mysqld/mysqld.sockを使うことができます。

注: mysql.sock)ファイルはサーバーの起動時に作成され、サーバーの停止時に削除されるため、作成したリンクが壊れているように見えることがありますが、 Sudo /opt/lampp/lampp startまたはその他の方法でサーバーを起動しました。

  1. まだ起動していない場合はサーバを起動し、プログラムをもう一度実行してみます。

がんばろう!私はあなたが今回それでうまくいかないことを願っています。

5
Robert Odoch

*エラー: 'ソケットを介してローカルMySQLサーバーに接続できません' /var/run/mysqld/mysqld.sock(2)

ソリューション

最後にmysqlをアンインストールして再インストールします。 **

  • Sudo apt-get mysql-serverを削除します。
  • Sudo apt-get mysql-clientを削除します。
  • Sudo apt-get mysql-commonを削除します。
  • Sudo apt-get remove phpmyadmin

それから再度インストールしてください

  • Sudo apt-get mysql-server-5.6をインストールしてください

この操作の後、164 MBの追加ディスクスペースが使用されます。

  • 続けたいですか? [Y/n] Y完全インストールの場合はYESを押します

...... .......

  • ついにあなたはこれらの行を得るでしょう....

    Libhtml-template-Perlのセットアップ(2.95-1)...

    Mysql-common-5.6(5.6.16-1〜exp1)の設定... libc-binのトリガー処理(2.19-0ubuntu6)ureadaheadのトリガー処理(0.100.0-16)...

  • その後

    root @ ubuntu1404:〜#mysql -u root -p(最初にuが使用するすべてのパスワードに対して)

  • パスワードを入力する:

  • 注:入力したパスワードはmysqlのインストール時のパスワードと同じである必要があります(.root、system、admin、rahulなどのように)。

    それからタイプ

  • Rahul_db(データベース名)を使用してください。

ありがとう。**

5

多分誰かがこの問題に直面しています。 Mysql Workbench on Ubuntu 14 を使用していて、このエラーが発生しました。

mysqldump: Got error: 2002: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) when trying to connect

Sudo find / -type sを実行してソケットファイルを探します。私の場合は/run/mysqld/mysqld.sockでした。

それで、私はちょうどtmpディレクトリにこのファイルへのリンクを作成しました。

Sudo ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock
4
Bilal

これはすでに数回言及されていましたが、これは私にとってすぐにうまくいきました:

サービスMySQL再起動

4
Jack BeNimble

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

/etc/my.cnfに次の行を追加してください:

[client]
socket=/var/lib/mysql/mysql.sock <= this path should be also same as is[mysqld]

そしてservice mysql restartでサービスを再開してください。

これは私のために働いた

4
karan

すでにmysqld.sock by /var/run/mysqldをインストールしている場合は、mysql-serverSudo apt-get install mysql-serverがあります。

4
spencer

私の場合、2つのmysqldプロセスが実行されていました。pkill-9 mysqldを使用してオプションのプロセスを強制終了しました。

3
amindri

あなたのシステムにたくさんのデータベースとテーブルがあり、my.cnfにinnodb_file_per_tableが設定されている場合、mysqlサーバーは開いているオブジェクト/ファイル(あるいはこれらのオブジェクトのためのディスクリプタ)を使い果たしているかもしれません。番号付き

open-files-limit = 2048

そしてmysqlを再起動してください。このアプローチは、ソケットがまったく作成されていない場合には役立つ可能性がありますが、実際には実際の問題ではない可能性があり、根本的な問題があります。

3
knb

私はちょうどUbuntu 14.10でこの問題を抱えていました

mysql-serverはもうインストールされていない(どういうわけか削除されています)が、壊れたパッケージや依存関係の問題/衝突があったため、インストールできませんでした。

最後に私はmysqlを再インストールしなければなりませんでした

Sudo apt-get remove mysql-client
Sudo apt-get install mysql-server
2
Dew

Ubuntu 16.04でmysqlをアンインストールしました https://askubuntu.com/questions/172514/how-do-i-uninstall-mysql

私はmysql https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-ubuntu-16-04 を再インストールしました

これはうまくいったようです。

2
Pranay Aryal

私は自分のMySQLをUbuntuの仮想マシン上で走らせていたので、起こったことは私が自分のホストとVMを再起動した時でした。私はIP 192.168.0.5で実行するようにmysqlを設定していましたが、現在はIPの動的割り当てにより、私の新しいIPは192.168.0.8でした

同じ問題がある場合は、コマンドifconfigを使用してIPを確認してください。

MySQLのバインディングをコマンドcat /etc/mysql/my.cnf | grep bind-addressで確認してください。

両方のIPアドレスが同じ場合は、MySQLサーバーを再インストールしてください。

そうでない場合は、nano、vi、vimまたはその他の好みのものを使用して/etc/network/interfaces内のIPを変更します。

私はSudo nano /etc/network/interfacesが好きです

以下を入力してください

auto eth0
iface eth0 inet static
address 192.168.0.5
netmask 255.255.255.0

Interfacesファイルを保存し、インタフェースを再起動しますSudo ifdown eth0 && Sudo ifup eth0 "eth0"をあなたのネットワークインタフェースに置き換えます

MySQLを再起動して、Sudo service mysql stopに続いてSudo service mysql startを再起動します。

私と同じ問題があるのなら、行ってもいいですよ!

1
Aman Chawla

Host127.0.0.1に変更するとうまくいきました。

/etc/mysql/my.cnf内のファイルを編集して、以下の行をセクションに追加します。client

[client]
port  = 3306
Host  = 127.0.0.1
socket  = /var/lib/mysql/mysql.sock

あなたがそれを終えた後。以下のコマンドを実行してください。

Sudo service mysql start
1
Dulith De Costa

私はCentOS VPSで同様の問題を抱えていました。 MySQLが起動しない、または起動した直後にクラッシュし続ける場合は、次の手順を試してください。

1)my.cnfファイル(/etc/my.cnfにあります)を見つけて、次の行を追加します。

innodb_force_recovery = X

xを1から6までの数字に置き換えます。1から始まり、MySQLが起動しない場合は増分します。 4、5、または6に設定するとデータが削除される可能性があるので、注意して http://dev.mysql.com/doc/refman/5.7/en/forcing-innodb-recovery.html を読んでください。

2)MySQLサービスを再起動します。 SELECTだけが実行されますが、現時点ではこれは正常な動作です。

3)mysqldumpを使用してすべてのデータベース/スキーマを1つずつダンプします。ダンプは後で圧縮解除する必要があるため、圧縮しないでください。

4)ルート内の個々のファイルを保持したまま、/ var/lib/mysql内のbdのディレクトリのみを移動(または削除)します。

5)MySQLを停止してから1)で追加した行のコメントを外します。 MySQLを起動します。

6)3)で捨てられた全てのBDを回復する。

がんばろう!

1
Heitor

端末プロンプトで次のことを試してください。

Sudo mysql

それができたら、新しいユーザーを作成して、アクセスを必要とする特定のデータベースに対して必要な特権を付与できます。

Mysql 5.7ではいくつかのことが変更され、アカウントがハッキングされるのを防ぐためにデフォルトで(mysql_native_passwordとは対照的に)auth_socketプラグインを使用します。 rootのpluginフィールドを設定することでこれを無効にすることができます、しかしあなたが非常に良い理由がない限りあなたはおそらく保護を迂回するべきではありません。特にSudo mysqlmysql -u root -pよりも簡単な場合は特にそうです。

Raspberry Pi helpのサイトから - 私はこの情報を見つけました - すべての場所の - 。 Lubuntu 18.04が数時間私の外にいらいらしてから魅力のように働きました。

1
JohanTux

MySQLサーバーが起動していないと思います。そのため、次のいずれかのコマンドを使用してサーバーを起動します。

#services mysql start

または

#/etc/init.d/mysql start
1
Susampath

アクセスできないソケットファイルのパスが '/var/run/mysqld/mysqld.sock'と同じであることを確認してください。そうでない場合は、パスを変更してください。 mysqldを停止します

$ Sudo /etc/init.d/mysqld stop

プロセスがまだ実行中の場合;

$ Sudo pkill -9 mysqld

ソケットが作成するmysqlディレクトリを削除します。私にとっては、削除を許可していなかったため、強制的に削除する必要がありました。

$ Sudo mkdir -p /var/run/mysqld

所有権をディレクトリに設定します

$ Sudo chown mysql:mysql /var/run/mysqld

Mysqlを起動します

$ Sudo /etc/init.d/mysql start

Mysqlを接続しようとしています

$ Sudo mysql -u dbuser -p
1
Sadee

私はまたMySQLの設定を確認します。私は自分のサーバーでこの問題に遭遇していましたが、私はちょっと早すぎると私のマシンのinnodb_buffer_pool_sizeを誤って設定しました。

innodb_buffer_pool_size = 4096M

それは通常2048年まで正常に動作しますが、私は4ギグをサポートするために必要なメモリがないと思います。

私はこれが他のmysql設定でも起こり得ると思います。

1
Greg

場合によっては、サーバーに十分なスペースがないこと、ログスペースのクリアなどのスペースを空けてmysqlを起動することなどがあります。

/etc/init.d/mysql start

0
Prashant

私はUbuntuでXAMPPを使っています。ターミナルを介してデータベースに接続しているときにこのエラーが発生しました。 XAMPPのデフォルトのソケットファイルパスは "/opt/lampp/etc/my.cnf"に次のように書かれているので、何も設定せずに解決します。

[client]
#password   = your_password
port        = 3306
socket      = /opt/lampp/var/mysql/mysql.sock

これで、端末上でmysqlコマンドでこのソケットパスパラメータを指定するだけで接続できます。

mysql -u root --socket /opt/lampp/var/mysql/mysql.sock

そしてそれは設定なしで行われます。

毎回ソケットパスを入力したくない場合は、my.cnfの "/var/run/mysqld/mysqld.sock"でデフォルトパスを変更してください。許可を与えて、mysqlサーバーを再起動してください。

0
Ani

最初にdir/var/run/mysqldを作成します

コマンド付き:

mkdir -p /var/run/mysqld

次に、ディレクトリに権限を追加します

chown mysql:mysql /var/run/mysqld

この試行の後

mysql -u root
0
Ingo

私の場合、問題は/etc/mysql/my.cnfのバインドアドレスにあります。

nano /etc/mysql/my.cnf

バインドアドレスを検索し、ホストIP(127.0.0.1ではなく)で特定のアドレスを削除します。

0
barresoft

デジタルオーシャンでドロップレットのサイズを変更すると、このような問題が発生しました。私はMySQLのバージョンをアップグレードしていたし、私のために働きます。ここに私が適用したものがチュートリアルです - https://serverpilot.io/community/articles/how-to-upgrade-mysql-5.5-to-5.6-on-ubuntu-14.04.html

0
Sam

私は全く同じ問題を抱えていました。 1時間苦労した後、私はmysql-common、mysql-client、mysql-serverを再インストールせずにそれを修正する方法を見つけました。

まず最初に、 "/ var/run/mysqld"に行きます。 mysql.sockが存在しないことがわかります。 mysqldディレクトリ全体を削除して再作成し、必要な権限を付与するだけです。

# rm -rf /var/run/mysqld && mkdir /var/run/mysqld && chown mysql /var/run/mysqld/

それでは、mysqlプロセスを完全に終了させて​​ください。サービスをシャットダウンした後でも、「/ etc/init.d/mysql status」コマンドを実行すると「ページクリーナーを待機しています」と表示されることがあります。

サービスを完全に終了するには

# pkill -9 mysqld

プロセスが終了したら、を使用してもう一度起動してみてください。

# /etc/init.d/mysql start

そして、あなたはそれがうまくいくことを見るでしょう!そしてそれをやめても問題ないでしょう。

0
xscorp7

Mysql.sockファイルはMariaDBの起動時に作成され、MariaDBのシャットダウン時に削除されます。 MariaDBが稼働していない場合は存在しません。 MariaDBをインストールしていないのかもしれません。あなたは以下の指示に従うことができました: https://www.linode.com/docs/databases/mariadb/how-to-install-mariadb-on-centos-7 BEST

0
jsina

私はマシンを再起動し、コマンド "service mysql restart"を発行したときにmysqlサーバーが再起動するまで、私はほとんどすべてのリストされた解決策を試してみました、私のために働いていませんでした。

0
SyCode

archlinuxでは、私はこのエラーに直面し、問題はmysqld-サービスが実行されていなかったことでした。

しかし、Archlinuxのドキュメントで説明されているように、mysqlサービスをsystemctl start mysqldで有効にすることはできませんでした。エラーはこんな感じだったと思う

mysqld.serviceが見つかりません

私は最初にシステムを再起動する必要がありました。

それから私は再びコマンドを入力し(そしてsystemctl enable mysqldを入力し)そして今mysqlは作成されたmysql.sockを見つけることができました。

0
Arch Linux Tux

私の解決策。

Ubuntu 18.04(WSL)

/ etc/mysql/my.cnf

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

/ etc/mysql/mysql.conf.d/mysqld.cnf

[mysqld]
user            = mysql
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
port            = 3306

ポートを変更しました。それは私のために働いた。別のポートを作成できます。例3355

0
omfaer