最近、homebrew(brew install mysql
)を使用してMySQLをインストールしようとしましたが、実行しようとすると次のエラーが表示されます。
エラー2002(HY000):ソケット '/tmp/mysql.sock'を介してローカルMySQLサーバーに接続できません(2)
/tmp/mysql.sock
も/var/lib/mysql.sock
もありません。
検索したが、mysql.sock
ファイルが見つかりませんでした。
どうすれば修正できますか?
経由でサーバーを実行したとき
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
Mysqlサーバーが起動していないようです。私は通常、停止コマンドを実行してから再起動します。
mysqld stop
mysql.server start
同じエラー、これは私のために動作します。
「localhost」の代わりに「127.0.0.1」を使用して接続してみてください。
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)
これがお役に立てば幸いです。
別の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]
ファイル/tmp/mysql.sock
は、一時フォルダーにあるため、おそらく名前付きパイプです。名前付きパイプは、永久に保存されることのない特殊ファイルです。
2つのプログラムを作成し、1つのプログラムから別のプログラムにメッセージを送信したい場合は、テキストファイルを作成できます。テキストファイルに何かを書き込むプログラムと、他のプログラムが書き込んだプログラムを読み取るプログラムがあります。これはパイプです。ただし、ファイルをコンピューターのハードディスクに書き込まないこと、IEはファイルを永続的に保存することはありません(ファイルを作成して保存するときのように)。
ソケットはパイプとまったく同じです。違いは、通常、ソケットはネットワーク経由で、つまりコンピューター間で使用されることです。ソケットは、別のコンピューターに情報を送信するか、別のコンピューターから情報を受信します。パイプとソケットの両方は、一時ファイルを使用して共有し、「通信」できるようにします。
この場合、どれがMySqlを使用しているかを識別するのは困難です。関係ありません。
コマンドmysql.server start
は、その特別なファイルを作成して変更を待つ無限ループを実行する「サーバー」(プログラム)を取得する必要があります(書き込みの場合はlisten
)。
その後、一般的な問題として、MySqlプログラムにマシン上にファイルを作成する権限がないため、root権限を付与する必要がある場合があります。
Sudo mysql.server start
Macos mojaveをインストールした後、/usr/local/var/mysql
の下にあるmysqlフォルダーを消去し、brew install mysql
で再インストールする必要がありました。
私は同じエラーを受け取りました、これが私を助けたものです:
$ln -sfv /usr/local/opt/mysql/*.plist ~/Library/LaunchAgents
$launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
$mysql -uroot
mysql>
私はこれを解決するためにかなりの時間を費やし、このエラーを探すときに常にこのページに戻ったので、誰かが私が失った時間を節約できることを期待して、ここに私のソリューションを残します。私の場合、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)]>
ノート:
ソケットを追加する必要があるグループについてはよくわかりません。最初に[client-server]がありましたが、[client]で十分だと思いました。だから私はそれを変更し、それはまだ動作します。
mariadb_config | grep socket
を実行すると、--socket [/tmp/mysql.sock]
が得られます。これは、/usr/local/mariadb/data/mariadb.sock
が実際の場所(少なくとも私のマシンでは)のように思えるので少し混乱します
/usr/local/mariadb/data/mariadb.sock
を実際に/tmp/mysql.sock
に設定できるのはどこなのかと思うので、.my.cnf
を編集する代わりにデフォルトの設定を使用できます(しかし、今はそれを理解するのに疲れています。 ..)
ある時点で、これを思いつく前に、他の回答で言及されていることも行いました。
私は私の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
これらの答えに追加するために、私の場合、ローカルmySQLサーバーがなく、Dockerコンテナー内で実行されていました。そのため、ソケットファイルは存在せず、「mysql」クライアントからアクセスできません。
Sockファイルはmysqldによって作成され、mysqlはこれを使用して通信します。ただし、mySqlサーバーがローカルで実行されていない場合、sockファイルは必要ありません。
ホスト名/ IPを指定することにより、sockファイルは必要ありません。
mysql --Host=127.0.0.1 --port=3306 --user=xyz --password=xyz
mysql_install_db
を実行する必要があります-最も簡単な方法は、インストールディレクトリにいる場合です。
$ cd /usr/local/Cellar/mysql/<version>/
$ mysql_install_db
または、次のようなmysql_install_db
a basedir
パラメーターをフィードすることもできます。
$ mysql_install_db --basedir="$(brew --prefix mysql)"
再起動後、ローカルmariadbに接続できませんでした。検索でもこのページが表示され、ソリューションを共有したかったのです。
/ usr/local/etc /のディレクトリmy.cnf.dが欠落していることに気付きました。
これはhomebrewの既知のバグであり、そこで説明および解決されています。 https://github.com/Homebrew/homebrew-core/issues/36801
高速な修正方法:mkdir /usr/local/etc/my.cnf.d
このスレッドを完了するだけです。したがって、MAMP(PRO)はかなり頻繁に使用されます
ここの道は
/Applications/MAMP/tmp/mysql/mysql.sock
データベースを初期化してから起動することにより、システム設定ペインでmysqlを手動で開始しました。これで問題が解決しました。
rm -rf/usr/local/var/mysql/ib_logfile *
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これで、最終的に新しいルートパスワードを入力して続行できます他のセットアップ設定。
これが誰かの役に立つことを願っています。男、私はこれが嫌い...