411

私の問題は、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た。しかし、パスワードの入力を求められないことに気付きました。管理者パスワードを要求することになっていませんか?

4

49 に答える 49

357

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

sudo service mysql start
于 2014-05-06T03:18:55.027 に答える
229

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

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 ステップ (最も好ましくない):
      • pgrep mysqlまたはのいずれかを使用して、mysql のプロセス ID を検索します。ps aux | grep mysql | grep -v grep
      • プロセスIDが4969終了すると仮定しますkill -9 4969

/var/run/mysqld/これを行った後、pid ファイルを探して削除することをお勧めします。

ソケットのパーミッションが、mysqld を実行しているすべてのユーザーが読み取り/書き込みできるようになっていることを確認してください。簡単なテストは、完全に読み書きできるように開いて、まだ機能するかどうかを確認することです。

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

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

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

于 2012-08-16T15:40:02.493 に答える
43

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

  1. まず、ファイルの場所を(「sudo find / -type s」を使用してターミナルで)見つけるmysql.sock必要があります。私の場合は入っていました/opt/lampp/var/mysql/mysql.sock
  2. ターミナルを起動して問題を発行 sudo Nautilus
    すると、スーパーユーザー権限でファイルマネージャーが起動します
  3. Nautilus から、mysql.sockファイルがある 場所に移動します
  4. ファイルを右クリックし、[リンクを作成] を選択します。
  5. リンク ファイルの名前を に変更し、ファイルをmysqld.sock右クリックして切り取ります。
  6. /var/runというフォルダに移動して作成し、mysqldそれを入力します
  7. 右クリックしてリンクファイルを貼り付けます
  8. 出来上がり!これで、次の場所にmysqld.sockファイルが作成されます/var/run/mysqld/mysqld.sock:)
于 2013-02-05T23:47:52.087 に答える
30

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

Ubuntu の場合:

sudo service mysql start;

CentOS または RHEL の場合:

sudo service mysqld start;
于 2016-02-23T12:13:21.113 に答える
15

これらのコードをコピーして貼り付けてください: これは、mysql データベースが適切にインストールされておらず、「ソケットを介してローカル 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
于 2013-08-08T20:43:20.287 に答える
13

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

エラーが発生したSQLライブラリ/パッケージの更新が原因だと思うので、アップグレードを行っている場合はこれを試してください:)

于 2013-01-24T06:37:32.740 に答える
9

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

sudo service mysql restart
于 2015-01-23T07:25:07.623 に答える
8

ユーザーロードステップの答えは私にとってはうまくいきました。/etc/mysql/my.cnfクライアントへの追加行でファイルを編集する必要がある場合があります

[client]
password = your_mysql_root_password
port  = 3306
host  = 127.0.0.1
socket  = /var/lib/mysql/mysql.sock
于 2013-11-18T00:38:08.193 に答える
7

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

ソリューション

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

  • sudo apt-get remove mysql-server
  • sudo apt-get remove mysql-client
  • sudo apt-get remove mysql-common
  • sudo apt-get remove phpmyadmin

その後、再度インストールします

  • sudo apt-get install mysql-server-5.6

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

  • 続けたいですか?[Y/n] Y インストールを完了するには [はい] を押します

………………

  • 最後に、これらの行を取得します....

    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 (最初に使用するパスワードごとに)

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

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

    次に、入力します

  • USE rahul_db(データベース名);

ありがとう。**

于 2014-10-03T13:29:57.787 に答える
6

一時的な解決策

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

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

作成されるファイルは の下にあるため、これは一時的な解決策であることに注意してください/tmp。恒久的な解決策については、他の回答を参照してください。

于 2014-12-08T07:35:31.043 に答える
5

これはすでに数回言及されていますが、これはすぐに機能しました:

サービス mysql の再起動

于 2015-09-25T18:50:12.580 に答える
4

すでにインストールされている場合はmysqld.sock、見つけることができます/var/run/mysqldmysql-serversudo apt-get install mysql-server

于 2013-07-31T12:25:30.957 に答える
3

Ubuntu 14.10でこの問題が発生しました

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

最後に、mysqlを再インストールする必要がありました

sudo apt-get remove mysql-client
sudo apt-get install mysql-server
于 2015-06-24T15:23:34.153 に答える
2

を変更する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
于 2015-02-08T03:17:30.523 に答える
1

私は同じ問題を抱えていました。mysql を削除して再インストールした後、この問題が発生しました。

注意:あなたのデータは削除されます!!! 残念ながら、mysql が壊れているときに mysql ファイルのバックアップを取得する方法が見つかりませんでした (これを行う方法を知っている場合は、コメントに記入してください)。
mysql のデータが問題にならない場合は、この方法を使用してください (新しくインストールした OS に mysql をインストールしようとしたときのように)。

問題:

問題の原因は何ですか? 最初apt removeにmysqlを再インストールしましたが、このジョブはmysqlでエラーを引き起こしました:

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

修理:

次に、コマンドpurgeを使用してmysqlを再インストールしましたが、機能しました:

  1. sudo apt purge mysql*(これにより、すべてのデータが消去されます!);
  2. sudo apt autoremove
  3. sudo apt install mysql-server(必要なアプリケーションを追加してください!)

これらの手順を実行した後、実行するだけsudo mysql -u rootです。

于 2021-10-21T08:40:58.753 に答える
0

リストされているほとんどすべてのソリューションを試しましたが、マシンを再起動するまで何も機能せず、コマンド「service mysql restart」を発行するとmysqlサーバーが再起動しました。

于 2016-05-23T15:39:42.333 に答える
0

この解決策は他の人を助けることができます.時には修正は非常に簡単です.

ライブ環境で、mysql サーバーと apache を再起動します。

sudo service mysql restart
sudo apache services restart

これは、プラグインをインストールしたり、データベース コマンドを実行したりするときによくある問題です。

于 2015-06-16T22:10:09.747 に答える
0

archlinux でこのエラーに直面しましたが、問題はmysqld-service が実行されていないことでした。

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

mysqld.service が見つかりません

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

次に、コマンドを再度入力して(そして を入力してsystemctl enable mysqldmysql、作成された を見つけることができましたmysql.sock

于 2016-03-08T15:18:19.820 に答える
0

mysql.sock ファイルは、MariaDB の起動時に作成され、MariaDB のシャットダウン時に削除されます。MariaDB が実行されていない場合は存在しません。MariaDB をインストールしていない可能性があります。以下の指示に従ってください: https://www.linode.com/docs/databases/mariadb/how-to-install-mariadb-on-centos-7 BEST

于 2017-03-26T21:09:06.583 に答える
0

Ubuntu の仮想マシンで MySQL を実行しているため、ホストと VM を再起動すると、IP が変更されました。IP 192.168.0.5 で実行するように mysql を構成しましたが、IP の動的割り当てにより、新しい IP は 192.168.0.8 になりました。

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

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

両方の IP が同じ場合は、mysql サーバーを再インストールします。

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

私は好むsudo nano /etc/network/interfaces

次のように入力します

auto eth0
iface eth0 inet static
address 192.168.0.5
netmask 255.255.255.0

インターフェイス ファイルを保存し、インターフェイスを再起動しますsudo ifdown eth0&& sudo ifup eth0「eth0」をネットワーク インターフェイスに置き換えます

MySQLsudo service mysql stopを再起動してからsudo service mysql start

あなたが私のものと同じ問題を抱えているなら、あなたは大丈夫です!

于 2015-06-16T18:16:06.350 に答える
-1

私が認識しているように、ランプではmysqlコマンドを識別しません。試してみてください

sudo /opt/lampp/bin/mysql

データベースと通信できるmysqlターミナルが開きます..

于 2016-07-19T07:03:25.443 に答える