Mysqlに接続しようとすると、次のようなエラーが表示されます。
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
このエラーに対する解決策はありますか?その理由は何でしょうか。
"localhost"または "127.0.0.1"に接続していますか? "localhost"に接続するとソケットコネクタが使用されますが、 "127.0.0.1"に接続するとTCP/IPコネクタが使用されます。ソケットコネクタが有効または機能していない場合は、「127.0.0.1」を使用してみてください。
Mysqlサービスが実行されていることを確認してください。
service mysqld start
その後、次のいずれかを試してください。
(mysqlにパスワードを設定していない場合)
mysql -u root
すでにパスワードを設定している場合
mysql -u root -p
ファイルmy.cnf(通常はetcフォルダーにあります)が正しく設定されている場合
socket=/var/lib/mysql/mysql.sock
次のコマンドでmysqlが実行されているかどうかを確認できます。
mysqladmin -u root -p status
権限をmysqlフォルダに変更してみてください。あなたが地元で働いているなら、あなたは試すことができます:
Sudo chmod -R 777 /var/lib/mysql/
それは私のためにそれを解決しました
MySQLサーバーが実行されていないか、それがソケットファイルの場所ではありません(my.cnfを確認してください)。
ほとんどの場合、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
それは私の問題を解決しました
私の場合は、ソケットファイルを/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 この問題を解決できます。
最近のRHELを使用している場合は、mysql dbの代わりにmariadb(オープンソースのmysql db)を起動する必要があります。
yum remove mysql
yum -y install mariadb-server mariadb
service mariadb start
これで通常の方法でmysqlにアクセスできるはずです。
mysql -u root -p
Mysqldサービスが実行されているかどうかを確認し、実行されていない場合はサービスを開始します。
問題が解決しない場合は/etc/my.cnf
を探して次のように変更します。ここでsocket
で始まる行が表示されます。この更新を行う前にそのファイルのバックアップを取ってください。
socket=/var/lib/mysql/mysql.sock
への変更
socket=/opt/lampp/var/mysql/mysql.sock -u root
/etc/my.cnf
を編集するだけでmy.cnf
に以下の行を追加する
[mysqld]
socket=/var/lib/mysql/mysql.sock
[client]
socket=/var/lib/mysql/mysql.sock
Mysqlを再起動して再度接続してください
mysql -uユーザー-pパスワードデータベース-hホスト。
/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
これにより、ディスク使用量を抑えることができます。
コミュニティ開発されたMySQLのforkであるMariaDBは、多くのディストリビューションでMySQLのデフォルトの実装となっています。
まず始めに
$ Sudo systemctl start mariadb
これがうまくいかない場合は、
$ Sudo systemctl start mysqld
それからmysqlを起動します。
$ mysql -u root -p
今日の時点で、Fedoraではパッケージの名前はmariadb
であり、Ubuntuではパッケージはmariadb-server
と呼ばれています。
システムにまだインストールされていない場合は、インストールする必要があります。
これは私のために働いたものです:
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
service mysqld restart
他のmysqlサービスが起動しているか確認してください。
サーバーを起動したことを確認してください。
mysql.server start
次にrootユーザーで接続します。
mysql -uroot
やってみる
echo 0 > /selinux/enforce
/ var/lib/mysql内のファイルを変更する場合(コピーやその置き換えなど)、ファイルの所有者をmysqlに設定する必要があります。これはmariadb.serviceの再起動が失敗した場合に重要です
chown -R mysql:mysql/var/lib/mysql/*
chmod -R 700/var/lib/mysql/*
あなたのMySQLが以前に動作していて突然サーバーを "再起動"するだけで突然停止した場合.
私のCentOS VPSでこの問題に直面していました。
絶えずなっていた
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'(2)
すべてのテクニックを試して、ついにサーバーを再起動すると問題が解決しました - >
shutdown -r now
お役に立てれば !!
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
最初に「service mysqld start」と入力してログインします。
このエラーを再現する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 ~ $
私の問題は、私が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が起動し、稼働しているはずです。
これが他の人にも役立つことを願っています。
Mysqlはmy.cnfファイルからソケットファイルの場所の情報を読み取りますが、mysql_secure_installationプログラムはそれを正しく行わないことがあります。
あなたが私のようで、インストール時に物事をシャッフルすると、mysqlを使ってデータベースに接続できる状況に陥るかもしれませんが、安全を期すことはできません(とにかくそのスクリプトを使用しない)。
これを修正するには、sreddyによる提案がうまくいきます。スクリプトがソケットを期待する場所から実際の場所へのソフトリンクを作成します。例:
ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock
(ソケットのデフォルトの場所として/ tmp /を使用します)
これは愚かな提案かもしれませんが、DBがlocalhostでホストされていることを100%確認してください。たとえば、ネットワーク管理者がAmazon DBホスティングを選択(または変更)した場合は、代わりにそのホスト名が必要になります。
My.cnfからexplicit_defaults_for_timestamp
を無効にする必要がありました。
あなたが sf.net のシェルにいるのなら、試してみてください。
mysql --Host=mysql-{LETTER} --user={LETTER}{GROUP ID}admin -p
プロジェクト管理者プロファイルのMySQLデータベースに表示されているように{LETTER}と{GROUP ID}を変更します。
ディスク容量が不足している場合、これは問題です。解決策は、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を使用して割り当てる必要があります)。
これは十分なディスク容量が原因で発生しました。
私は私が何人かの人々を助けることを願っています!!!!ありがとうございます。
私の場合は、新しいデータベースをインポートしていましたが、その後再び接続することができませんでした。最後に、それがスペースの問題であることに気付きました。
最後のデータベースを削除してハードドライブを拡張するか、私が行ったことを実行して仮想マシンのスナップショットを復元できます。
万が一誰かがそれが役に立つと思っている
それは私のために次のような変更でうまくいきました
My.cnfの[mysqld]と[client]で同じソケットのパスが指定されていて、mysqlを再起動します。
[mysqld] socket =/var/lib/mysql/mysql.sock
[クライアント]ソケット=/var/lib/mysql/mysql.sock
sSHクライアントでmysqlに接続しようとしているときにこの問題に遭遇し、ソケット間の切り替えが必要なときにコマンドにソケットパスを追加することが有用であることがわかりました。
> mysql -u user -p --socket=/path/to/mysql5143.sock
最初の2、3の解決策を試してください。エラーはまだポップアップです&/var/lib/mysql/mysql.sock
が見つからない場合
find /var/ -name mysql.sock
/ var /の空き容量を確認してください。
df
ディレクトリがいっぱいの場合は、いくつかの不要なファイルやディレクトリを削除してください。
rm /var/cache/*
おそらくあなたの問題は今ソートされるでしょう。