web-dev-qa-db-ja.com

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

Mysqlに接続しようとすると、次のようなエラーが表示されます。

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

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

236
Atul

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

207
Jan Thomä

Mysqlサービスが実行されていることを確認してください。

service mysqld start

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

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

mysql -u root

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

mysql -u root -p
174

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

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

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

mysqladmin -u root -p status

権限をmysqlフォルダに変更してみてください。あなたが地元で働いているなら、あなたは試すことができます:

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

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

26
marimaf

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

20
Dan Grossman

ほとんどの場合、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

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

17
sreddy

私の場合は、ソケットファイルを/etc/my.cnfから/var/lib/mysql/mysql.sockへの/tmp/mysql.sock内の別の場所に移動しました

Mysqldサービスを再起動した後でも、接続しようとするとエラーメッセージが表示されます。 ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

問題はクライアントの設定方法にあります。診断を実行すると、実際には正しいソケットパスが表示されます。例:ps aux | grep mysqld

作品:

mysql -uroot -p -h127.0.0.1
mysql -uroot -p --socket=/tmp/mysql.sock

動作しません:

mysql -uroot -p
mysql -uroot -p -hlocalhost

Mysql設定内の[client]セクションの下に同じ socket 行を追加することで fix この問題を解決できます。

12
Dejan

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

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

これで通常の方法でmysqlにアクセスできるはずです。

mysql -u root -p
12
duhaime

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

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

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

への変更

socket=/opt/lampp/var/mysql/mysql.sock -u root
11
VKGS

/etc/my.cnfを編集するだけでmy.cnfに以下の行を追加する

[mysqld]

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

[client]

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

Mysqlを再起動して再度接続してください

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

10
minhas23

/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

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

7
Karthik

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

まず始めに

$ Sudo systemctl start mariadb

これがうまくいかない場合は、

$ Sudo systemctl start mysqld

それからmysqlを起動します。

$ mysql -u root -p

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

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

6

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

ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
service mysqld restart
5
User

他のmysqlサービスが起動しているか確認してください。

4
Kishore Relangi

サーバーを起動したことを確認してください。

mysql.server start

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

mysql -uroot
4
Deniz Ozger

やってみる

echo 0 > /selinux/enforce
3
dvin

/ var/lib/mysql内のファイルを変更する場合(コピーやその置き換えなど)、ファイルの所有者をmysqlに設定する必要があります。これはmariadb.serviceの再起動が失敗した場合に重要です

chown -R mysql:mysql/var/lib/mysql/*

chmod -R 700/var/lib/mysql/*

3

あなたのMySQLが以前に動作していて突然サーバーを "再起動"するだけで突然停止した場合.

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

絶えずなっていた

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

すべてのテクニックを試して、ついにサーバーを再起動すると問題が解決しました - >

shutdown -r now

お役に立てれば !!

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

2
Zernel

最初に「service mysqld start」と入力してログインします。

2
hPrasad

このエラーを再現する1つの方法:外部サーバーに接続しようとしたが、存在しないローカルサーバーに接続したい場合は、次のようにします。

eric@dev ~ $ mysql -u dev -p
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through 
socket '/var/lib/mysql/mysql.sock' (2)
eric@dev ~ $

だからあなたはこのようにホストを指定する必要があります:

eric@dev ~ $ mysql --Host=yourdb.yourserver.com -u dev -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 235
Server version: 5.6.19 MySQL Community Server (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+-------------------------+
| Database                |
+-------------------------+
| information_schema      |
| mysql                   |
| performance_schema      |
+-------------------------+
3 rows in set (0.00 sec)

mysql> exit
Bye
eric@dev ~ $
1
Eric Leschinski

私の問題は、私が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

Rootとしてテストします。

mysql -u root -p

mysqlが起動し、稼働しているはずです。

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

1
bharald

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

あなたが私のようで、インストール時に物事をシャッフルすると、mysqlを使ってデータベースに接続できる状況に陥るかもしれませんが、安全を期すことはできません(とにかくそのスクリプトを使用しない)。

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

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

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

1

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

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

0
powtac

あなたが sf.net のシェルにいるのなら、試してみてください。

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

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

0
Chetabahana

ディスク容量が不足している場合、これは問題です。解決策は、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ディレクトリの下にlsコマンドを入力すると(openSUSE 11.1では/ var/lib/mysqlにあります)、以下のようになります。

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を使用して割り当てる必要があります)。

これは十分なディスク容量が原因で発生しました。

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

0
c.chasapis

私の場合は、新しいデータベースをインポートしていましたが、その後再び接続することができませんでした。最後に、それがスペースの問題であることに気付きました。

最後のデータベースを削除してハードドライブを拡張するか、私が行ったことを実行して仮想マシンのスナップショットを復元できます。

万が一誰かがそれが役に立つと思っている

0
Evan

それは私のために次のような変更でうまくいきました

My.cnfの[mysqld]と[client]で同じソケットのパスが指定されていて、mysqlを再起動します。

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

[クライアント]ソケット=/var/lib/mysql/mysql.sock

0
minhas23

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

> mysql -u user -p --socket=/path/to/mysql5143.sock
0
Jaak Kütt

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

find /var/ -name mysql.sock

/ var /の空き容量を確認してください。

df

ディレクトリがいっぱいの場合は、いくつかの不要なファイルやディレクトリを削除してください。

rm /var/cache/*

おそらくあなたの問題は今ソートされるでしょう。

0
Sadee