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


143

MySQLサーバーをインストールして接続しようとしましたが、エラーが発生します。

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

/ tmpディレクトリを確認しましたが、mysql.sockがありません。mysql.sockがどこにも見つかりません。私はそれが中にあるかもしれないと読んだ

    /var/lib/mysql/mysql.sock

しかし、私もそこをチェックしましたが、mysqlディレクトリもありません。/lib内のいくつかのpostfixだけです。誰かがこの問題を助けてくれますか?


2
私は、Mac OS X上で働いている
user3344382

こんにちは、接続に使用しているコマンドを貼り付けられますか?MySQLも始めましたか?
Mark Butler

@MarkButler次のコマンドを使用しています:/ usr / local / mysql / bin / mysql
user3344382

そうです、サーバーが実行されていなかっただけです。しかし、私はまだmysql.sockがどこにあるのか理解できません、それが存在する可能性のある他の隠された場所があるのでしょうか?
user3344382 2014年

このエラーは非常に一般的で、さまざまな理由が考えられます。きちんとした概要については、ここを参照してください。medium.com
@ 7anac

回答:


272

MySQLサーバーを起動してみます。

mysql.server start


44
エラー!サーバーはPIDファイルを更新せずに終了しました
bastianwegge


mysqlサービスの開始を忘れました!
GeekHades 2018年

1
@bastianwegge /usr/local/var/mysql/USERNAME.local.errのエラーファイルを確認してみてください。私の場合、/ tmp / mysql.sockを削除してから再起動する必要がありましたmysql.server start
Josh Bradley

61

OS X Yosemiteをアップデートした後、同じ質問が出ました。解決策は非常に簡単です。システム設定を確認してください-> mysql、ステータスはSTOPでした。再起動するだけで、私のMacで正常に動作します。


1
非常にシンプルな@kerenのおかげで、これが唯一の問題だったときにmy.cnfファイルの設定を変更するのに45分も無駄になりました。
kandroidj 2015

おかげさまで私にも働き、DMGのインストールに関してアイデアがありませんでした。
Rameshwar Vyevhare、2016

残念ながらこれは私を助けませんでした
simhumileco '25 / 07/25

シンプルで素晴らしい!
Desmond DAI 2017

6
えっと、何?OSXのシステム環境設定にMySQLオプションがあるのはなぜですか?
AlxVallejo 2017年

45

MAMPの場合

ln -s /Applications/MAMP/tmp/mysql/mysql.sock /tmp/mysql.sock

https://coderwall.com/p/w5kwzw/solved-can-t-connect-to-local-mysql-server-through-socket-tmp-mysql-sockから

更新:コンピューターを再起動するたびにこのコマンドを入力する必要があるため、ショートカットを作成しました。

端末タイプで以下を実行します。

~: vi ~/.profile

追加

alias ...='source ~/.profile'
alias sockit='sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock /tmp/mysql.sock'

保存する。

端末タイプ:

~: ... .profile設定をソースします。

今、ターミナルであなたはただタイプすることができます

~: sockit

1
驚くばかり。私が探していた修正だけです。
JoshHighland 2016

1
私はこの投稿に何度も戻ってきましたが、常に機能します。
Trey Copeland

MAMP外でmysql 5.7.1にアップグレードし、エラーが発生しました。これで解決しました
David

MacブックでMAMPを使用している場合、これは機能します
kelrob-dev

32

次のコマンドで問題が解決しました:

sudo chown -R _mysql:mysql /usr/local/var/mysql

sudo mysql.server start

1
3時間検索した結果、これで問題が解決しました。私はmysqlをhomebrewでインストールしbrew install mysqlただけですが、homebrewが実行を適切に機能するように指示したコマンドはありません。これですべての問題が解消されました...ありがとうございます!! あなたが書いた最初の行は正確には何ですか?どういう意味ですか?
mesqueeb

よろしくお願いいたします。
Nirojan Selvanathan 2016年

1
ねえ、私のためにそれがあった:sudoのchownコマンド-R _mysql:mysqlのは/ usr / local / mysqlの/データ
Junaid Bhura

chown -R所有者-Rを再帰的に変更
Hos Mercury

初期の10.13.1とhomebrewは、mariadb(10.2.10)のインストール時にこのエラーを出しました。この所有者の変更により修正されたため、sudo brew services start mariadb(ログイン時だけでなく)ブート時にmariadbを起動するようになりました。わーい!ありがとうございました!
イギー

16

すべての解決策を試した後、それはホストを指定した後に私のためにのみ機能しました

mysql -u root -p -h127.0.0.1

パスワードを尋ねるとき

Enter password:

Enterキーを押します

上記のようにすべてが問題なければ、問題なく動作します。


2
Docker for Macを使用してDockerコンテナーでmysqlをセットアップし、その3306ポートをMacにマップします。を追加しないと、-h 127.0.0.1常にプロンプ​​トが表示されますCan't connect to local MySQL server through socket '/tmp/mysql.sock' (2)。引数を追加すると、うまく機能します。
Evi Song

1
これは、127.0.0.1を通過するときにソケットを使用しないためだと思います。狭い回避策の詳細。
Lucas Morgan

1
MySQLをインストールしたときにコマンドを実行したmysql -u root -h127.0.0.1 ことがないため、-pフラグなしで実行するとうまくいきましたmysql_secure_installation。私の理解では、この場合、インストールではデフォルトでパスワードは必要ありません。
リッチートーマス

1
魅力のように働いた!
Panduka DeSilva

10

何時間も苦労した後、うまくいったのは

sudo mysql.server start

次に、安全なインストールを行います

mysql_secure_installation 

次に、経由でデータベースに接続します

mysql -uroot -p

Mysqlはhomebrew経由でインストールされ、バージョンは

Server version: 5.7.21 Homebrew

バージョンによってソリューションが異なる場合があるため、バージョンを指定すると役立つ場合があります。


9

存在するmysql構成ファイルで/etc/my.cnf、以下の変更を行ってから、mysqlddameonプロセスを再起動します

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

同様にこの関連するスレッドを確認してください

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


/ etcディレクトリにmy.cnfファイルはありません。そのファイルを手動で作成できると思いますが、/ var / libにmysqlディレクトリがないと言ったように、ソケットはどのようにそこにあるのでしょうか?
user3344382 2014年

私が投稿した関連スレッドを確認し、mysqlサーバーが実際に実行されているかどうかを確認します。
Rahul

私はファイルを次の場所で見つけました/etc/mysql/my.cnf
デボン

あなたが醸造してインストールした場合は、使用する必要がある/tmp/mysql.sock靴下の場所として
M.academyでマークShust

8

以下は私の問題を解決しました:

MySQLサーバーがどこにリストされているかを確認します。netstat-nlp TCPにリストされている場合は、「localhost」の代わりにDBに接続するときに127.0.0.1を使用します。

こちらの MySQLドキュメントを確認してください


これは私にとってはうまくいくようで、mysqlが生きていることを証明していますが、なぜローカルソケットに接続できないのですか?
コリンD

8

これを試してみてください。

sudo /usr/local/mysql/support-files/mysql.server start


なぜこの道なのか?「mysqlはどこですか」コマンド(MAC OS)を使用している間、出力/ usr / local / mysql / bin /を出力します。Macでこのパスを識別する方法は?
Vineeth Bhaskaran

はい

4

Mac OS XでXAMPPを使用していて、MySQLをHomebrewとともにインストールしている場合、この問題が発生する可能性があります。XAMPPマネージャーウィンドウで、[サーバーの管理]に移動して[MySQL]を選択し、[構成]をクリックして構成ファイルを開きます。ソケットファイルのパスがあり、そのパスをMySQLホスト構成に配置すると機能します。

それはこのようなものです:

...
[client]
#password   = your_password
port        = 3306
socket      = /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
...

次に、たとえばDjangoで:

...    
DATABASES = {
        "default": {
            "ENGINE": "django.db.backends.mysql",
            "NAME": "database_name",
            "USER": "user",
            "PASSWORD": "password",
            "HOST": "/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock",
            "PORT": "",
        }
    }
...

お役に立てれば。


3

まず、データディレクトリがどこにあるかを知ることが重要でした。/usr/local/var/mysql ここには、ローカルマシン名の前に拡張子.errが付いたファイルが少なくとも1つあります。診断に必要なすべての情報が含まれていました。

私は最初にmysql 8をインストールすることで失敗したと思います。アプリが互換性がないため、5.7にダウングレードする必要がありました

私のために働いた私の解決策は/usr/local/etc/my.cnfに行くことでした

もしあれば、この行を見つけます。私はそのmysql 8が関連していると思います:

mysqlx-bind-address = 127.0.0.1 

mysql 5.7でエラーログに表示されないようになっているため、削除してください。

bind-addressの下にない場合は、この行も追加します。

socket=/tmp/mysql.sock

/tmpディレクトリに移動し、そこにあるmysql.sockファイルをすべて削除します。サーバーの起動時に、sockファイルを再作成します

mySQLが停止状態のデータディレクトリをゴミ箱に移動します。私はだった /usr/local/var/mysql。これはログがある場所と同じです

そこから走った

>mysqld --initialize

その後、すべてが機能し始めました...このコマンドは、最後にランダムなパスワードを提供します。次のステップのためにそのパスワードを保存します

これを実行して自分のパスワードを割り当てます。

>mysql_secure_installation 

両方とも

>brew services stop mysql@5.7

そして

>mysql.server start

現在動作しています。お役に立てれば。約3時間の試行錯誤です。



0

私はこれを行うのに多くの時間を費やしてきました。私は自分のdjangoアプリを自分のサーバーに置きたいのですが、実行するpython manage.py migrateとこの質問に会いました

そして!!これセットした ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock やっと動いた!



0

端末からmysqlサーバーを停止して起動すると、問題が解決しました。以下は、MacOでmysqlサーバーを停止および開始するためのコマンドです。

sudo /usr/local/mysql/support-files/mysql.server stop
sudo /usr/local/mysql/support-files/mysql.server start

注:Macシステム設定からサービスを再起動しても、私のMacの問題は解決しませんでした。端末から再起動してみてください。


0

macOSで実行している場合は、最初に「システム環境設定」に移動してMySQLが実行されているかどうかを確認する方が簡単です。


-1

CentOSの場合、mysqlを初期化するファイルは次の場所にあります。

/etc/init.d/mysqld start
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.