284

mysqlに接続しようとすると、次のエラーが発生します。

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

このエラーの解決策はありますか?その背後にある理由は何でしょうか?

4

36 に答える 36

246

「localhost」または「127.0.0.1」に接続していますか? 「localhost」に接続するときはソケット コネクタが使用されますが、「127.0.0.1」に接続するときは TCP/IP コネクタが使用されることに気付きました。ソケット コネクタが有効になっていない/機能していない場合は、「127.0.0.1」を使用してみてください。

于 2010-12-15T09:47:31.360 に答える
199

mysql サービスが実行されていることを確認します

service mysqld start

次に、次のいずれかを試してください。

(mysql のパスワードを設定していない場合)

mysql -u root

すでにパスワードを設定している場合

mysql -u root -p
于 2012-12-13T14:01:32.723 に答える
31

ファイル my.cnf (通常は etc フォルダーにあります) が正しく構成されている場合

socket=/var/lib/mysql/mysql.sock

次のコマンドを使用して、mysql が実行されているかどうかを確認できます。

mysqladmin -u root -p status

mysql フォルダーへのアクセス許可を変更してみてください。ローカルで作業している場合は、次を試すことができます。

sudo chmod -R 777 /var/lib/mysql/

それは私のためにそれを解決しました

于 2011-11-10T19:04:58.683 に答える
24

MySQLサーバーが実行されていないか、ソケットファイルの場所ではありません(my.cnfを確認してください)。

于 2010-12-15T09:34:23.257 に答える
23

mysql.sockには存在しない可能性が高い/var/lib/mysql/です。

同じファイルが別の場所にある場合は、シンボリック リンクを作成します。

例:私はそれを持っています/data/mysql_datadir/mysql.sock

ユーザーを mysql に切り替えて、以下のように実行します。

su mysql

ln -s /data/mysql_datadir/mysql.sock /var/lib/mysql/mysql.sock

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

于 2012-02-21T20:29:50.063 に答える
22

最近の RHEL を使用している場合は、mysql db の代わりに mariadb (オープン ソースの mysql db) を起動する必要がある場合があります。

yum remove mysql
yum -y install mariadb-server mariadb
service mariadb start

これで、通常の方法で mysql にアクセスできるようになります。

mysql -u root -p
于 2016-05-26T23:08:13.490 に答える
18

編集するだけで、/etc/my.cnf 次の行を追加しますmy.cnf

[mysqld]

socket=/var/lib/mysql/mysql.sock 

[client]

socket=/var/lib/mysql/mysql.sock

mysql を再起動し、再度接続します

mysql -u ユーザー -p パスワード データベース -h ホスト;

于 2013-11-13T17:31:54.997 に答える
14

mysqldサービスが実行されているかどうかを確認し、実行されていない場合は、サービスを開始します。

問題が解決しない場合は、/etc/my.cnf次のように検索して変更します。ここで、で始まる行が表示されますsocket。この更新を行う前に、そのファイルのバックアップを取ります。

socket=/var/lib/mysql/mysql.sock  

への変更

socket=/opt/lampp/var/mysql/mysql.sock -u root
于 2011-06-13T08:21:58.803 に答える
10

コミュニティが開発した MySQL のフォークである MariaDB は、多くのディストリビューションで MySQL のデフォルトの実装になっています。

ですから、まず始めるべきは、

$ sudo systemctl start mariadb

これが失敗した場合は、むしろ試してください。

$ sudo systemctl start mysqld

次に、mysql を起動します。

$ mysql -u root -p

現在、Fedora ではパッケージの名前はmariadb であり、Ubuntu では と呼ばれていmariadb-serverます。

そのため、システムにまだインストールされていない場合は、インストールする必要がある場合があります。

于 2016-10-23T12:18:15.360 に答える
7

に十分なスペースが残っていることを確認してください/var。Mysql デーモンがドライブに追加情報を書き込むことができない場合、mysql サーバーは起動せず、エラーが発生します。Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

使用を検討してください

expire_logs_days = 10
max_binlog_size = 100M

これにより、ディスクの使用量を抑えることができます。

于 2013-05-14T15:37:08.580 に答える
5

これが私のために働いたものです:

ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
service mysqld restart
于 2015-02-25T00:20:50.297 に答える
4

サーバーを起動したことを確認します。

mysql.server start

次に root ユーザーで接続します。

mysql -uroot
于 2014-03-31T22:07:53.397 に答える
3

試す

echo 0 > /selinux/enforce
于 2013-09-16T16:20:17.900 に答える
3

mysql が以前は動作していて、突然停止した場合は、サーバーを「再起動」してください。

CentOS VPS でこの問題に直面していました。->

絶えず得ていた

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

すべての手法を試し、最終的にサーバーを再起動すると問題が修正されました->

shutdown -r now

お役に立てれば !!

于 2012-11-12T05:15:25.387 に答える
2

MySQL サーバーが正しくインストールされていることを確認してください。このエラーに何度も遭遇しました。ソケットからデバッグするのは複雑だと思います。つまり、再インストールする方が簡単かもしれません。

CentOS 7 を使用している場合、正しいインストール方法は次のとおりです。

まず、mysql コミュニティ ソースを追加します。
yum install http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm

次に、次の方法でインストールできますyum install mysql-community-server

systemctl で開始します。systemctl start mysqld

于 2015-08-13T09:32:10.713 に答える
1

これはばかげた提案かもしれませんが、DB がまだ localhost でホストされていることを 100% 確認してください。たとえば、ネットワーク管理者が Amazon DB ホスティングを選択 (または変更) した場合、代わりにそのホスト名が必要になります!

于 2016-04-15T15:52:45.117 に答える
1

mysql はソケットファイルの場所の情報を my.cnf ファイルから読み取りますが、mysql_secure_installation プログラムはそれを正しく行わない場合があることに注意してください。

したがって、あなたが私のようで、インストール時に物事をシャッフルする場合、mysql を使用してデータベースに問題なく接続できる状況に陥る可能性がありますが、物事を保護することはできません (とにかくそのスクリプトを使用しません)。

これを修正するには、sreddy からの提案がうまく機能します。スクリプトがソケットを期待する場所から実際の場所へのソフトリンクを作成します。例:

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

(ソケットのデフォルトの場所として /tmp/ を使用します)

于 2013-10-14T21:50:18.713 に答える
1

私の問題は、mysql を正常にインストールし、正常に動作したことです。

しかし、ある日、同じエラーが発生しました。

ソケット '/var/lib/mysql/mysql.sock' を介してローカル MySQL サーバーに接続できない (2)

また、mysql.sock ファイルは存在しませんでした。

この解決策は私の問題を解決し、mysql は再び起動して実行されました。

root としてログインします。

sudo su -

走る:

systemctl stop mysqld.service
systemctl start mysqld.service
systemctl enable mysqld.service

ルートとしてテスト:

mysql -u root -p

これで、mysql が稼働しているはずです。

これが他の誰かにも役立つことを願っています。

于 2013-10-03T09:30:41.827 に答える
1

次の変更でうまくいきました

ソケットのパスが [mysqld] に記載されていて、my.cnf の [client] に記載されていても、mysql を再起動します。

[mysqld] socket=/var/lib/mysql/mysql.sock

[クライアント] socket=/var/lib/mysql/mysql.sock

于 2014-02-13T04:13:01.580 に答える
0

explicit_defaults_for_timestampmy.cnfから無効にする必要がありました。

于 2014-06-01T10:13:29.870 に答える
0

SSH クライアントで mysql に接続しようとしているときにこの問題に遭遇しました。ソケット間の切り替えが必要な場合に、コマンドにソケット パスを追加すると役立つことがわかりました。

> mysql -u user -p --socket=/path/to/mysql5143.sock
于 2014-01-24T14:47:05.673 に答える
0

これは、ディスク容量が不足している場合に問題になります。解決策は、HDD の空き容量を増やすことです。

説明を得るためにもっと読んでください:

LINUX で MySQL を実行している場合は、コマンド disk free で HDD の空き容量を確認します。

 df 

あなたがそのようなものを得ている場合:

Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda2              5162828   4902260         0 100% /
udev                    156676        84    156592   1% /dev
/dev/sda3              3107124     70844   2878444   3% /home

次に、これが問題であり、これで解決策が得られました。

mysql.sock は、ほとんどの場合ルート フォルダーの下にある mysql フォルダーに作成する必要があるため、スペースが不足しているため、作成できませんでした。

定期的に mysql ディレクトリ (openSUSE 11.1 では /var/lib/mysql にあります) で ls コマンドを実行すると、次のような結果が得られます:

hostname:/var/lib/mysql #
.protected  IT     files        ibdata1             mysqld.log  systemtemp
.tmp        NEWS   greekDB      mysql               mysqld.pid  test
ARXEIO      TEMP1  ib_logfile0  mysql.sock          polis
DATING      deisi  ib_logfile1  mysql_upgrade_info  restore

mysql.sock ファイルが頻繁に表示されたり消えたりします (フォルダーに mysql.sock ファイルがあるインスタンスをヒットするには、ls で割り当てを試行する必要があります)。

これは、十分なディスク容量がないことが原因です。

私は何人かの人々を助けることを願っています!!!! ありがとう!

于 2014-02-13T19:49:48.010 に答える
0

sf.netのシェルにいる場合は、次を試してください。

mysql --host=mysql-{LETTER} --user={LETTER}{GROUP ID}admin -p

プロジェクト管理者プロファイルの MySQL データベースに示されているように、{LETTER} と {GROUP ID} を変更します。

于 2016-01-03T18:49:02.273 に答える
0

最初の 2、3 の解決策を試してください。エラーはまだポップアップです & 見つからない場合/var/lib/mysql/mysql.sock

find /var/ -name mysql.sock

/var/ で使用可能なスペースを確認してください

df

ディレクトリがいっぱいの場合は、不要なファイル/ディレクトリをいくつか削除します

rm /var/cache/*

おそらくあなたの問題は今ソートされます。

于 2015-02-13T15:56:27.107 に答える
0

同じ問題に雨が降るだけです - そして、これが私がそれに対処した方法です.

mysqld が実行されていると仮定すると、問題は単に mysql クライアントがソケット ファイルを探す場所を認識していないことにある可能性があります。

これに対処する最も簡単な方法は、次の行をユーザーのプロファイル .my.cnf ファイル (Linux では通常 /home/myusername の下にあります) に追加することです。

socket=<path to the mysql socket file>

そこに .my.cnf ファイルがない場合は、次を含むファイルを作成します。

[mysql]
socket=<path to the mysql socket file>

私の場合、mysql のデフォルト データ フォルダ (/var/lib/mysql) を別の場所 (/data/mysql) に移動したため、.my.cnf に次を追加しました。

[mysql]
socket=/data/mysql/mysql.sock

お役に立てれば。

于 2013-08-26T06:27:42.160 に答える
-1

私は同じ問題を抱えており、ログを掘り下げたとき:

sudo tail -f /var/log/mysqld.log

InnoDB: mmap(137363456 bytes) failed; errno 12
200610  6:27:27 InnoDB: Completed initialization of buffer pool
200610  6:27:27 InnoDB: Fatal error: cannot allocate memory for the buffer pool
200610  6:27:27 [ERROR] Plugin 'InnoDB' init function returned error.
200610  6:27:27 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
200610  6:27:27 [ERROR] Unknown/unsupported storage engine: InnoDB
200610  6:27:27 [ERROR] Aborting

明らかに十分なメモリがなく、InnoDB の起動が停止しています。スワップファイルを設定したことがないことに気付きました...

これに従ってスワップファイルをセットアップしましたが、動作します。

于 2020-06-10T06:45:06.237 に答える
-3

そのため、「/var/lib/mysql/mysql.sock」でソケットファイルが見つからないことがわかります

あなたがすることは、mysql.sockファイルをそれに接続する必要があることです。おそらく/tmp/mysql.sock、ファイルが存在しない場合は、それを使用して作成します

touch /tmp/mysql.sock

そして実行する

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

内部に mysql ディレクトリがない場合は、それを/var/lib作成することに注意してください

mkdir mysql

アプリを更新する

于 2016-04-07T07:20:45.417 に答える