web-dev-qa-db-ja.com

ソケットhomebrewを介してローカルMySQLサーバーに接続できません

最近、homebrew(brew install mysql)を使用してMySQLをインストールしようとしましたが、実行しようとすると次のエラーが表示されます。

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

/tmp/mysql.sock/var/lib/mysql.sockもありません。

検索したが、mysql.sockファイルが見つかりませんでした。

どうすれば修正できますか?

87
socketman

経由でサーバーを実行したとき

mysql.server start

/ tmp/mysql.sockにソケットが表示されるはずです。ただし、システムは/ var/mysql/mysql.sockでそれを予期しているようです。これを修正するには、/ var/mysqlにシンボリックリンクを作成する必要があります。

Sudo mkdir /var/mysql

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

これで解決しました。 phpMyAdminはlocalhostand127.0.0.1

クレジットは Henry

85
AAGD

Mysqlサーバーが起動していないようです。私は通常、停止コマンドを実行してから再起動します。

mysqld stop
mysql.server start

同じエラー、これは私のために動作します。

59
jesuis

「localhost」の代わりに「127.0.0.1」を使用して接続してみてください。

23
Iswanto San

1)以下のコマンドを実行したときに「mysql stopped」が表示される場合;

brew services list

2)そして、以下のコマンドでmysqlを起動できる場合;

mysql server start

これの意味は; mysqlは手動で起動できますが、オペレーティングシステムの起動時に自動的に起動しません。サービスにmysqlを追加すると、この問題が修正されます。そのためには、以下のコマンドを実行できます。

brew services start mysql

その後、オペレーティングシステムを再起動し、mysqlに接続して、自動的に起動するかどうかを確認できます。私は同じことをし、以下のエラーの受信を停止しました。

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

これがお役に立てば幸いです。

16
Berk

別のmysql(8.0)インストールからいくつかのディレクトリが残っていましたが、それらは削除されませんでした。

私はこれを次のようにして解決しました。

最初にmysqlをアンインストールします

brew uninstall [email protected]

削除されなかったフォルダー/ファイルを削除します

rm -rf /usr/local/var/mysql
rm /usr/local/etc/my.cnf

Mysqlを再インストールしてリンクする

brew install [email protected]
brew link --force [email protected]

サービスを有効にして開始する

brew services start [email protected]
14
Royal.O

ファイル/tmp/mysql.sockは、一時フォルダーにあるため、おそらく名前付きパイプです。名前付きパイプは、永久に保存されることのない特殊ファイルです。

2つのプログラムを作成し、1つのプログラムから別のプログラムにメッセージを送信したい場合は、テキストファイルを作成できます。テキストファイルに何かを書き込むプログラムと、他のプログラムが書き込んだプログラムを読み取るプログラムがあります。これはパイプです。ただし、ファイルをコンピューターのハードディスクに書き込まないこと、IEはファイルを永続的に保存することはありません(ファイルを作成して保存するときのように)。

ソケットはパイプとまったく同じです。違いは、通常、ソケットはネットワーク経由で、つまりコンピューター間で使用されることです。ソケットは、別のコンピューターに情報を送信するか、別のコンピューターから情報を受信します。パイプとソケットの両方は、一時ファイルを使用して共有し、「通信」できるようにします。

この場合、どれがMySqlを使用しているかを識別するのは困難です。関係ありません。

コマンドmysql.server startは、その特別なファイルを作成して変更を待つ無限ループを実行する「サーバー」(プログラム)を取得する必要があります(書き込みの場合はlisten)。

その後、一般的な問題として、MySqlプログラムにマシン上にファイルを作成する権限がないため、root権限を付与する必要がある場合があります。

Sudo mysql.server start
4

Macos mojaveをインストールした後、/usr/local/var/mysqlの下にあるmysqlフォルダーを消去し、brew install mysqlで再インストールする必要がありました。

4
GnrlBzik

私は同じエラーを受け取りました、これが私を助けたものです:

$ln -sfv /usr/local/opt/mysql/*.plist ~/Library/LaunchAgents
$launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
$mysql -uroot
mysql>
3
gouravtiwari21

私はこれを解決するためにかなりの時間を費やし、このエラーを探すときに常にこのページに戻ったので、誰かが私が失った時間を節約できることを期待して、ここに私のソリューションを残します。私の場合、MySqlではなくmariadbを使用していますが、このソリューションをニーズに合わせて調整できる場合があります。

私の問題

は同じですが、私のセットアップは少し異なります(mysqlの代わりにmariadb):

自作でmariadbをインストール

$ brew install mariadb

デーモンを開始しました

$ brew services start mariadb

接続しようとしましたが、上記のエラーが発生しました

$ mysql -uroot
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

私の解決策

どのmy.cnfファイルがmysqlによって使用されているかを調べます(この comment で提案されているとおり)。

$ mysql --verbose --help | grep my.cnf
/usr/local/etc/my.cnf ~/.my.cnf
                        order of preference, my.cnf, $MYSQL_TCP_PORT,

unixソケットファイルが実行されている場所を確認します(ほぼ説明 ここ )。

$ netstat -ln | grep mariadb
.... /usr/local/mariadb/data/mariadb.sock

(mariadbの代わりにgrep mysqlを使用できます)

見つかったソケットファイルを~/.my.cnfに追加します(必要に応じてファイルを作成します)(上記の~/.my.cnf-コマンドの実行時にmysql --verbose ...がリストされていると仮定します):

[client]
socket = /usr/local/mariadb/data/mariadb.sock

Mariadbを再起動します。

$ brew services restart mariadb

この後、mysqlを実行して次のようになりました:

$ mysql -uroot
ERROR 1698 (28000): Access denied for user 'root'@'localhost'

そのため、代わりにスーパーユーザー特権でコマンドを実行し、パスワードを入力した後、次のようになりました。

$ Sudo mysql -uroot
MariaDB [(none)]>

ノート:

  1. ソケットを追加する必要があるグループについてはよくわかりません。最初に[client-server]がありましたが、[client]で十分だと思いました。だから私はそれを変更し、それはまだ動作します。

  2. mariadb_config | grep socketを実行すると、--socket [/tmp/mysql.sock]が得られます。これは、/usr/local/mariadb/data/mariadb.sockが実際の場所(少なくとも私のマシンでは)のように思えるので少し混乱します

  3. /usr/local/mariadb/data/mariadb.sockを実際に/tmp/mysql.sockに設定できるのはどこなのかと思うので、.my.cnfを編集する代わりにデフォルトの設定を使用できます(しかし、今はそれを理解するのに疲れています。 ..)

  4. ある時点で、これを思いつく前に、他の回答で言及されていることも行いました。

2
dingalapadum

私は私のMacで同じ問題に直面し、次のチュートリアルに従ってそれを解決しました

https://mariadb.com/resources/blog/installing-mariadb-10116-mac-os-x-homebrew

ただし、続行する前に古いバージョンを削除またはアンインストールすることを忘れないでください。

コマンド:

brew uninstall mariadb

xcode-select --install

Ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" - See more at: https://mariadb.com/resources/blog/installing-mariadb-10116-mac-os-x-homebrew#sthash.XQoxRoJp.dpuf

brew doctor

brew update

brew info mariadb

brew install mariadb

mysql_install_db

mysql.server start
2
Hany Sakr

これらの答えに追加するために、私の場合、ローカルmySQLサーバーがなく、Dockerコンテナー内で実行されていました。そのため、ソケットファイルは存在せず、「mysql」クライアントからアクセスできません。

Sockファイルはmysqldによって作成され、mysqlはこれを使用して通信します。ただし、mySqlサーバーがローカルで実行されていない場合、sockファイルは必要ありません。

ホスト名/ IPを指定することにより、sockファイルは必要ありません。

mysql --Host=127.0.0.1 --port=3306 --user=xyz --password=xyz
2
Wayne

mysql_install_dbを実行する必要があります-最も簡単な方法は、インストールディレクトリにいる場合です。

$ cd /usr/local/Cellar/mysql/<version>/ 
$ mysql_install_db

または、次のようなmysql_install_db a basedirパラメーターをフィードすることもできます。

$ mysql_install_db --basedir="$(brew --prefix mysql)"
1
Kelley Robinson

再起動後、ローカルmariadbに接続できませんでした。検索でもこのページが表示され、ソリューションを共有したかったのです。

/ usr/local/etc /のディレクトリmy.cnf.dが欠落していることに気付きました。

これはhomebrewの既知のバグであり、そこで説明および解決されています。 https://github.com/Homebrew/homebrew-core/issues/36801

高速な修正方法:mkdir /usr/local/etc/my.cnf.d

0
timo

このスレッドを完了するだけです。したがって、MAMP(PRO)はかなり頻繁に使用されます

ここの道は

/Applications/MAMP/tmp/mysql/mysql.sock
0
alexdd55

データベースを初期化してから起動することにより、システム設定ペインでmysqlを手動で開始しました。これで問題が解決しました。

0
krish

rm -rf/usr/local/var/mysql/ib_logfile *

0
Pasichnik Roman

mysql_secure_installationを実行し、取得した新しいパスワードを入力すると:


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


この答え から次のことを試みたときに気付きました:

netstat -ln | grep mysql

何も返されなかったので、.sockファイルがないことを意味すると考えました。

そのため、次のコードをmy.cnfファイル(/ etc/my.cnfまたは私の場合は、/ usr/local/etc/my.cnf)。

下:

[mysqld]
socket=/tmp/mysql.sock

下:

[client]
socket=/tmp/mysql.sock

これは this post に基づいていました。

次に、mysqlをもう一度停止/開始して、再試行しましたmysql_secure_installationこれで、最終的に新しいルートパスワードを入力して続行できます他のセットアップ設定。

これが誰かの役に立つことを願っています。男、私はこれが嫌い...

0
Must Impress