소켓 홈브류를 통해 로컬 MySQL 서버에 연결할 수 없습니다.


109

최근에 homebrew ( brew install mysql)를 사용 하여 MySQL을 설치하려고 시도했는데 실행하려고하면 다음 오류가 발생합니다.

오류 2002 (HY000) : '/tmp/mysql.sock'소켓을 통해 로컬 MySQL 서버에 연결할 수 없습니다 (2).

더 없다 /tmp/mysql.sock도 아니다 /var/lib/mysql.sock.

검색했지만 mysql.sock파일을 찾지 못했습니다 .

이 문제를 어떻게 해결할 수 있습니까?


이 링크 GeekHades 답변을 볼 수 있습니다. stackoverflow.com/questions/4847069/…
GeekHades

나는 설치된 mysql을 양조하고 노트북 배터리가 죽고 불완전한 종료를 강요 한 후에도 동일한 문제가 발생했습니다. mysqld마지막으로 MySQL이 제대로 종료되었는지 확인하고 확인하기 위해 실행할 가치가 있습니다. '더러운'종료가있는 경우 (예 : 랩톱 배터리로 인해 시스템이 강제 종료되는 경우)이를 정리해야합니다. 그런 다음 MySQL 서버를 다시 시작할 수 있습니다 mysql.server start..
Dave Everitt

1
이 대답은 나를 위해 일했습니다. stackoverflow.com/a/6378429/2641861
ArnoHolo

이것은 Time Machine 백업에서 새 Mac Mini를 복원 한 후에 발생했습니다. 작동을 시작하려면 mysql@5.7을 제거하고 다시 설치해야했습니다. 망치질 이었지만 모든 구성이 유지 되었기 때문에 비교적 고통스럽지 않았습니다.
Joshua Pinter

답변:


93

다음을 통해 서버를 실행했을 때

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이 localhost 127.0.0.1에서 행복하게 작동 합니다. .

신용은 헨리 에게 간다


1
이것은 또한 Wordpress가 mySQL에 연결하지 못하는 문제를 해결했습니다. 다시 한 번 감사드립니다
Ayoub

20
내가 시도 mysql.server start하면 ERROR! The server quit without updating PID file (/usr/local/var/mysql/lyahdav-C02R32HCG8WM.pid). 을 통해 설치된 MySQL의 이전 버전이 필요했습니다 brew install mysql@5.6.
Liron Yahdav

3
달리는. mysql.server start나를 위해 그것을 고정
ivange94

@Liron, 직면 한 문제를 해결 했습니까? 나는 도움없이 같은 문제에 직면하고 있습니다.
Buddy

@EB이 문제가 발생한 지 오래되었지만 내 의견을 돌아 보면 이전 버전의 MySQL을 설치하기 위해 해결 방법을 시도 했습니까? 그 외에는 불행히도 아이디어가 없습니다.
Liron Yahdav 2017

61

mysql 서버가 시작되지 않은 것 같습니다. 일반적으로 중지 명령을 실행 한 다음 다시 시작합니다.

mysqld stop
mysql.server start

같은 오류이며 이것은 나를 위해 작동합니다.


89
. 오류! PID 파일 (/usr/local/var/mysql/myHostName.pid)을 업데이트하지 않고 서버가 종료됩니다. ?
Pesulap

내가했던 mysqld &위의 의견에 따라,하지만 난 그것을 아마 같은 일을 할 것이라고 생각 mysqld stop 나는 확신이 있기 때문에 부적절한 종료이었다 내 경우입니다.
Mitch VanDuyn

54

다른 mysql (8.0) 설치에서 제거되지 않은 일부 디렉토리가 남아 있습니다.

다음을 수행하여이 문제를 해결했습니다.

먼저 mysql 제거

brew uninstall mysql@5.6

제거되지 않은 폴더 / 파일 삭제

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

mysql을 다시 설치하고 연결하십시오.

brew install mysql@5.6
brew link --force mysql@5.6

서비스 활성화 및 시작

brew services start mysql@5.6

3
고마워요 :) 모든 명령이 실패했다하지만 당신
뱌체슬라프 Loginov

1
감사합니다-이 답변은 24 시간 동안 벽에 머리를 치는 것으로 끝났습니다
vladiim

1
이것은 다른 모든 것을 시도한 후에도 저에게 효과적이었습니다! 감사합니다!!!! :)
Eric Eric

1
나에게 문제는 이전 설치 후에도 / usr / local / var / mysql이 여전히 있다는 것입니다. 제거가 트릭을했습니다! 제안 해 주셔서 감사합니다.
themantimes8

이 오류가 사라지기 전에 homebrew에서 언급 한 "mysql_secure_installation"단계를 실행해야했습니다.
searaig

27

"localhost"대신 "127.0.0.1"을 사용하여 연결해보십시오.


2
@Esteban MySQL은 "localhost"에 연결하도록 지시하면 유닉스 소켓에 연결을 시도합니다. 127.0.0.1에 연결하도록 지시하면 강제로 네트워크 소켓에 연결하는 것입니다. 따라서 MySQL이 파일 시스템 소켓이 아닌 네트워크 소켓 만 수신하도록 구성했을 것입니다. (출처 : serverfault.com/a/295300/59101 )
Ardee Aram

이것은 원격 MySQL DB에 대한 localhost에서 SSH 터널을 실행하기 때문에 mysql 클라이언트가 TCP 소켓을 사용하도록 강제하는 데 도움이되었습니다.
Iow

22

1) 아래 명령을 실행할 때 "mysql 중지됨"이 표시되는 경우;

brew services list

2) 아래 명령으로 mysql을 시작할 수 있다면;

mysql server start

이것은 의미합니다; mysql은 수동으로 시작할 수 있지만 운영 체제가 시작될 때 자동으로 시작되지 않습니다. 서비스에 mysql을 추가하면이 문제가 해결됩니다. 이를 위해 아래 명령을 실행할 수 있습니다.

brew services start mysql

그런 다음 운영 체제를 다시 시작하고 mysql에 연결하여 자동으로 시작되는지 확인할 수 있습니다. 나는 똑같이했고 아래 오류 수신을 중단했습니다.

오류 2002 (HY000) : '/tmp/mysql.sock'소켓을 통해 로컬 MySQL 서버에 연결할 수 없습니다 (2).

이게 도움이 되길 바란다.


@berk 그것은 내 경우에 오류의 리드를 얻는 데 도움이되었지만 다른 오류 'ERROR 1045 (28000) : 사용자'user '@'localhost '에 대한 액세스가 거부되었습니다 (암호 사용 : NO)'
Pratik Khadka

안녕하세요 @PratikKhadka, 지금 발생하는 오류는 mysql이 실행 중이며 인증 문제가 있음을 의미합니다. 게시 한 오류 메시지에 따르면 사용자 이름을 '사용자'로 사용하고 있으며 비밀번호를 사용하지 않고 있습니다. 유효한 사용자 이름과 암호를 사용해야합니다. 다음 링크를 확인하는 것이 좋습니다. " forums.mysql.com/read.php?34,140320,140324 "
버크

OS를 다시 시작할 필요가 없습니다. "brew services start mysql"을 실행하기 만하면됩니다. 감사!
AKS

안녕하세요 @AKS, 당신이 맞습니다. 다시 시작하지 않아도 작동합니다. 다시 시작이 필요한 이유를 설명하기 위해 답변을 편집했습니다. OS 시작시 mysql이 자동으로 시작되는지 확인해야합니다. 의견을 보내 주셔서 감사합니다!
Berk 19

5

파일 /tmp/mysql.sock은 임시 폴더에 있기 때문에 아마도 Named-Pipe 일 것입니다. 명명 된 파이프는 영구적으로 저장되지 않는 특수 파일입니다.

두 개의 프로그램을 만들고 한 프로그램이 다른 프로그램에 메시지를 보내도록하려면 텍스트 파일을 만들 수 있습니다. 한 프로그램은 텍스트 파일에 무언가를 쓰고 다른 프로그램은 다른 프로그램이 쓴 것을 읽습니다. 이것이 바로 파이프입니다. 단, 컴퓨터 하드 디스크에 파일을 쓰지 않고 IE는 파일을 영구적으로 저장하지 않습니다 (파일을 만들고 저장할 때처럼).

소켓은 파이프와 똑같습니다. 차이점은 소켓은 일반적으로 네트워크를 통해 컴퓨터간에 사용된다는 것입니다. 소켓은 정보를 다른 컴퓨터로 보내거나 다른 컴퓨터에서 정보를받습니다. 파이프와 소켓은 모두 임시 파일을 사용하여 '통신'할 수 있도록 공유합니다.

이 경우 MySql이 어떤 것을 사용하고 있는지 식별하기가 어렵습니다. 그래도 중요하지 않습니다.

명령 mysql.server start은 해당 특수 파일을 생성하고 변경을 기다릴 ( listen쓰기를 위해) 무한 루프를 실행하는 '서버'(프로그램) 를 가져와야합니다.

그 후, 일반적인 문제는 MySql 프로그램에 컴퓨터에 파일을 생성 할 권한이 없기 때문에 루트 권한을 부여해야 할 수 있습니다.

sudo mysql.server start

감사합니다. 난 그냥 실행 mysql.server start, mysql.server stop다음에 다시 사제를 통해 서비스를 시작 brew services start mysql@5.7하고 일이 원활하게 실행.
taylorthurlow

4

macos mojave를 설치 한 후 mysql 폴더를 지우고 그렇지 않으면 권한 관련 사항을 /usr/local/var/mysql통해 다시 설치 brew install mysql해야했습니다.


귀하의 답변으로 문제를 해결했습니다. 이전에 mysql을 설치 한 다음 mysql@5.6으로 다운 그레이드하려고했습니다.
Rodrirokr

고마워 친구. 그것은 내 문제도 해결했습니다. / usr / local / var / mysql을 제거하고 다시 설치하는 것이 저에게 해결책이었습니다.
Oğuz Can Sertel

1
주의 : 제거 /usr/local/var/mysql하면 기존 데이터베이스도 모두 제거됩니다!
Leonardo

3

동일한 오류가 발생했으며 이것이 도움이되었습니다.

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

3

이 답변에 추가하기 위해 제 경우에는 로컬 mySQL 서버가 없었고 도커 컨테이너 내부에서 실행 중이었습니다. 따라서 소켓 파일이 존재하지 않으며 "mysql"클라이언트에서 액세스 할 수 없습니다.

sock 파일은 mysqld에 의해 생성되고 mysql은이를 사용하여 통신합니다. 그러나 mySql 서버가 로컬에서 실행되고 있지 않으면 sock 파일이 필요하지 않습니다.

호스트 이름 / ip를 지정하면 sock 파일이 필요하지 않습니다.

mysql --host=127.0.0.1 --port=3306 --user=xyz --password=xyz

3

이 문제를 해결하기 위해 많은 시간을 보냈고이 오류를 찾을 때 항상이 페이지로 돌아 왔기 때문에 누군가가 내가 잃어버린 시간을 절약하기를 바라면서 여기에 솔루션을 남겨 둘 것입니다. 제 경우에는 MySql이 아닌 mariadb를 사용하고 있지만이 솔루션을 필요에 맞게 조정할 수 있습니다.

내 문제

동일하지만 내 설정이 약간 다릅니다 (mysql 대신 mariadb).

homebrew와 함께 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

$ 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

(당신은 원할 수 있습니다 grep mysql mariadb 대신에 )

찾은 소켓 파일을 추가합니다 ~/.my.cnf(필요한 경우 파일 생성) ( 위에서 -command를 ~/.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. 소켓을 추가해야하는 그룹에 대해 잘 모르겠습니다. 먼저 [클라이언트-서버]에 소켓을 추가했지만 [클라이언트]로 충분하다고 생각했습니다. 그래서 나는 그것을 변경했지만 여전히 작동합니다.

  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

실행해야합니다. mysql_install_db가장 쉬운 방법은 설치 디렉토리에있는 경우입니다.

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

양자 택일로, 당신은 먹을 수 다음과 같은 매개 변수를 :mysql_install_dbbasedir

$ mysql_install_db --basedir="$(brew --prefix mysql)"

2

다음 자습서에 따라 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

1
제공하신 링크가 어떻게 도움이되었는지 간단한 예를 들어 설명해주세요. 링크가 사라질 수 있으므로 답변이 삭제 될 수 있습니다.
Kurt Van den Branden

2

다시 시작한 후 로컬 mariadb에 연결할 수 없었고 검색을 통해이 페이지로 이동했으며 솔루션을 공유하고 싶었습니다.

/ usr / local / etc /의 my.cnf.d 디렉토리가 누락 된 것을 발견했습니다.

이것은 여기에서 설명되고 해결 된 homebrew의 알려진 버그입니다. https://github.com/Homebrew/homebrew-core/issues/36801

빠른 수정 방법 : mkdir /usr/local/etc/my.cnf.d


이것은 나를 위해 일했습니다. 이후에 로컬 mariadb에 연결 brew update하고 다시 시작할 수 없습니다 . brew services list결과는 mariadb 상태 started를 노란색 으로 표시했습니다 . 팁 고마워.
nterms

1

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

이것은 이 게시물 을 기반으로 합니다 .

그런 다음 mysql을 다시 중지 / 시작하고 mysql_secure_installation 을 다시 시도 하여 마침내 새 루트 암호를 입력하고 다른 설정 기본 설정을 계속할 수 있습니다.

누군가에게 도움이되기를 바랍니다. 이건 싫어요 ...


0

이 스레드를 완료하기 위해. 따라서 MAMP (PRO)가 자주 사용됩니다.

여기의 경로는

/Applications/MAMP/tmp/mysql/mysql.sock

0

데이터베이스를 초기화 한 다음 시작하여 시스템 환경 설정 창에서 수동으로 mysql을 시작했습니다. 이것은 내 문제를 해결했습니다.


0

제 경우에는 로그 파일에서 범인이 발견되었습니다.

$ tail /usr/local/var/mysql/<hostname>.lan.err
2019-09-19  7:32:21 0 [ERROR] InnoDB: redo log file './ib_logfile0' exists. Creating system tablespace with existing redo log files is not recommended. Please delete all redo log files before creating new system tablespace.
2019-09-19  7:32:21 0 [ERROR] InnoDB: Database creation was aborted with error Generic error. You may need to delete the ibdata1 file before trying to start up again.

그래서 ib_logfile0오류를 제거하기 위해 이름 을 변경 했습니다 ( ib_logfile1나중에 똑같이해야 했습니다).

mv /usr/local/var/mysql/ib_logfile0 /usr/local/var/mysql/ib_logfile0_bak
mv /usr/local/var/mysql/ib_logfile1 /usr/local/var/mysql/ib_logfile1_bak
brew services restart mariadb

0

나는 같은 문제가 있었다. 성공하지 못한 채 이러한 모든 방법을 시도한 후 다음을 수행했습니다.

tail -f the-mysql-or-maria-db-error-file.err

다른 콘솔에서 :

brew services restart mariadb

다음 오류를 보았습니다.

"MAC HOMEBREW 충돌 복구에 실패했습니다. 문제를 해결하고 (예 : 메모리 부족 오류 인 경우) 다시 시작하거나 tc 로그를 삭제하고 mysqld를 시작하십시오."

그래서 tc.logextesion을 변경하고 mariadb를 tc.log.txt다시 시작했습니다.

brew services restart mariadb

완료되었습니다!


0

이것은 나를 위해 작동합니다.

brew upgrade mysql

감사


0

저에게는 mariadb오래 전에 설치 한 다음 mysql@5.7.

실행 mysql -uroot하면 오류가 발생합니다. ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

답변 읽기 :

  • 나는 제거했다 mariadb
  • 폴더를 삭제했습니다. /usr/local/var/mysql
  • 명령을 실행했습니다. mysqld --initialize

그런 다음 나는 할 수 있었다 mysql -uroot -p


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.