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
それは私の問題を解決しました
最近の RHEL を使用している場合は、mysql db の代わりに mariadb (オープン ソースの mysql db) を起動する必要がある場合があります。
yum remove mysql
yum -y install mariadb-server mariadb
service mariadb start
これで、通常の方法で mysql にアクセスできるようになります。
mysql -u root -p
編集するだけで、/etc/my.cnf
次の行を追加しますmy.cnf
[mysqld]
socket=/var/lib/mysql/mysql.sock
[client]
socket=/var/lib/mysql/mysql.sock
mysql を再起動し、再度接続します
mysql -u ユーザー -p パスワード データベース -h ホスト;
mysqldサービスが実行されているかどうかを確認し、実行されていない場合は、サービスを開始します。
問題が解決しない場合は、/etc/my.cnf
次のように検索して変更します。ここで、で始まる行が表示されますsocket
。この更新を行う前に、そのファイルのバックアップを取ります。
socket=/var/lib/mysql/mysql.sock
への変更
socket=/opt/lampp/var/mysql/mysql.sock -u root
コミュニティが開発した MySQL のフォークである MariaDB は、多くのディストリビューションで MySQL のデフォルトの実装になっています。
ですから、まず始めるべきは、
$ sudo systemctl start mariadb
これが失敗した場合は、むしろ試してください。
$ sudo systemctl start mysqld
次に、mysql を起動します。
$ mysql -u root -p
現在、Fedora ではパッケージの名前はmariadb
であり、Ubuntu では と呼ばれていmariadb-server
ます。
そのため、システムにまだインストールされていない場合は、インストールする必要がある場合があります。
に十分なスペースが残っていることを確認してください/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
これにより、ディスクの使用量を抑えることができます。
これが私のために働いたものです:
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
service mysqld restart
サーバーを起動したことを確認します。
mysql.server start
次に root ユーザーで接続します。
mysql -uroot
試す
echo 0 > /selinux/enforce
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
これはばかげた提案かもしれませんが、DB がまだ localhost でホストされていることを 100% 確認してください。たとえば、ネットワーク管理者が Amazon DB ホスティングを選択 (または変更) した場合、代わりにそのホスト名が必要になります!
mysql はソケットファイルの場所の情報を my.cnf ファイルから読み取りますが、mysql_secure_installation プログラムはそれを正しく行わない場合があることに注意してください。
したがって、あなたが私のようで、インストール時に物事をシャッフルする場合、mysql を使用してデータベースに問題なく接続できる状況に陥る可能性がありますが、物事を保護することはできません (とにかくそのスクリプトを使用しません)。
これを修正するには、sreddy からの提案がうまく機能します。スクリプトがソケットを期待する場所から実際の場所へのソフトリンクを作成します。例:
ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock
(ソケットのデフォルトの場所として /tmp/ を使用します)
私の問題は、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 が稼働しているはずです。
これが他の誰かにも役立つことを願っています。
次の変更でうまくいきました
ソケットのパスが [mysqld] に記載されていて、my.cnf の [client] に記載されていても、mysql を再起動します。
[mysqld] socket=/var/lib/mysql/mysql.sock
[クライアント] socket=/var/lib/mysql/mysql.sock
explicit_defaults_for_timestamp
my.cnfから無効にする必要がありました。
SSH クライアントで mysql に接続しようとしているときにこの問題に遭遇しました。ソケット間の切り替えが必要な場合に、コマンドにソケット パスを追加すると役立つことがわかりました。
> mysql -u user -p --socket=/path/to/mysql5143.sock
これは、ディスク容量が不足している場合に問題になります。解決策は、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 で割り当てを試行する必要があります)。
これは、十分なディスク容量がないことが原因です。
私は何人かの人々を助けることを願っています!!!! ありがとう!
sf.netのシェルにいる場合は、次を試してください。
mysql --host=mysql-{LETTER} --user={LETTER}{GROUP ID}admin -p
プロジェクト管理者プロファイルの MySQL データベースに示されているように、{LETTER} と {GROUP ID} を変更します。
最初の 2、3 の解決策を試してください。エラーはまだポップアップです & 見つからない場合/var/lib/mysql/mysql.sock
find /var/ -name mysql.sock
/var/ で使用可能なスペースを確認してください
df
ディレクトリがいっぱいの場合は、不要なファイル/ディレクトリをいくつか削除します
rm /var/cache/*
おそらくあなたの問題は今ソートされます。
同じ問題に雨が降るだけです - そして、これが私がそれに対処した方法です.
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
お役に立てれば。
私は同じ問題を抱えており、ログを掘り下げたとき:
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 の起動が停止しています。スワップファイルを設定したことがないことに気付きました...
これに従ってスワップファイルをセットアップしましたが、動作します。
そのため、「/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
アプリを更新する