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

mysql에 로그인해야합니다.

[root @ localhost ~]# mysql -uroot -p123456

경고: 명령 줄 인터페이스에서 암호를 사용하는 것은 안전하지 않을 수 있습니다..

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

/ var / lib / mysql / 경로에 mysql.sock이 없음을 발견했습니다..

mysql.sock 경로 확인

[root @ localhost ~]# ps -ef | grep mysql

뿌리 23408 1 0 06:01 pts / 0 00:00:00 /bin / sh / usr / bin / mysqld_safe –datadir = / sctsapp / data / mysql–pid 파일

= / data / mysql / localhost.localdomain.pid

mysql 24029 23408 0 06:01 pts / 0 00:00:00 /usr / sbin / mysqld –basedir = / usr –datadir = / data / mysql

–플러그인 디렉토리 = / usr / lib64 / mysql / plugin –user = mysql –log-error = / var / log / mysqld.log

–pid-file = / data / mysql / localhost.localdomain.pid –소켓 =/data / mysql / mysql.sock

뿌리 24784 8954 0 06:07 pts / 0 00:00:00 grep mysql

/ var / spool / mail / root에 새 메일이 있습니다.

그러나 클라이언트는 mysql에 로그인 할 때 / var / lob / mysql 경로에서 mysql.sock을 검색합니다., 따라서 클라이언트가 찾을 수 없습니다..

 

해결책

1. mysql에 로그인 할 때 mysq.sock 경로 지정.

[root @ localhost ~]# mysql -uroot -px9uLCqlkAfez9p6m -S /data/mysql/mysql.sock

경고: 명령 줄 인터페이스에서 암호를 사용하는 것은 안전하지 않을 수 있습니다..

MySQL 모니터에 오신 것을 환영합니다. 명령은 다음으로 끝납니다. ; 또는 g.

MySQL 연결 ID는 128

서버 버전: 5.6.21 MySQL 커뮤니티 서버 (LPG)

저작권 (씨) 2000, 2014, Oracle 및 / 또는 그 계열사. 판권 소유.

Oracle은 Oracle Corporation 및 / 또는 Oracle Corporation의 등록 상표입니다.

계열사. 다른 이름은 해당 소유자의 상표 일 수 있습니다..

'help;’ 또는‘ h’ 도와주기 위해. ' c 입력’ 현재 입력 문을 지우려면.

mysql>

 

2. 더하다 [고객] my.cnf의 도메인, mysql.sock의 실제 경로를 지정하십시오.

vim /etc/my.cnf

[고객]

포트 = 3306

소켓 = / data / mysql / mysql.sock

저장 및 종료,mysql 다시 시작, mysql에 다시 로그인

[root @ localhost ~]# 서비스 mysql 재시작

MySQL 종료…. 성공!

MySQL 시작. 성공!

[root @ localhost ~]# mysql -uroot -p123456

경고: 명령 줄 인터페이스에서 암호를 사용하는 것은 안전하지 않을 수 있습니다..

MySQL 모니터에 오신 것을 환영합니다. 명령은 다음으로 끝납니다. ; 또는 g.

MySQL 연결 ID는 1

서버 버전: 5.6.21 MySQL 커뮤니티 서버 (LPG)

저작권 (씨) 2000, 2014, Oracle 및 / 또는 그 계열사. 판권 소유.

Oracle은 Oracle Corporation 및 / 또는 Oracle Corporation의 등록 상표입니다.

계열사. 다른 이름은 해당 소유자의 상표 일 수 있습니다..

'help;’ 또는‘ h’ 도와주기 위해. ' c 입력’ 현재 입력 문을 지우려면.

mysql>

 

3. mysql.sock 링크 만들기, mysql.sock 경로를 지정하지 않고 mysql에 로그인 할 수 있습니다..

ln -s /data/mysql/mysql.sock /var/lib/mysql/mysql.sock

 

부착:

mysql.sock의 근원

mysqld_safe 시작시 mysql은 기본 경로 / tmp /에 sock 파일을 생성합니다..

이 파일은 클라이언트와 서버 간의 연결에 사용됩니다. mysql.sock을 삭제한다고 가정합니다.

실수로.

[root @ 10-186-20-46 로컬]# cd / tmp

[root @ 10-186-20-46 임시]# 총 8

-rw-r–r– 1 뿌리 뿌리 1201 6 월 25 09:59 my.cnf srwxrwxrwx 1 mysql mysql 0 6 월 25 09:46 mysql.sock

-rw-rw-r– 1 zabbix zabbix 4 6 월 16 15:43 zabbix_agentd.pid

[root @ 10-186-20-46 임시]# rm mysql.sock rm: 소켓 제거

`mysql.sock '? 와이

[root @ 10-186-20-46 임시]# mysql -uroot -p Enter

암호: 오류 2002 (HY000): 로컬 MySQL 서버에 연결할 수 없습니다.

소켓‘/tmp/mysql.sock’을 통해 (2)

[root @ 10-186-20-46 임시]#

localhost에서 mysql에 로그인 할 수 없음을 알 수 있습니다..

하나의 서버에 여러 개의 mysql을 설치 한 경우, 그래서 많은 mysqlxxxx.sock이 생성됩니다

다른 mysqld_safe가 시작될 때 / tmp / 경로. 그러나 mysqlxxxx.sock의 경로는 지정할 수 있습니다.

my.cnf.에 있지만 하나의 클라이언트 만 설치했습니다., 따라서 다른 mysql 서비스에 로그인하려면, 당신

mysqlxxxx.sock의 다른 경로를 지정해야합니다..

노트:

많은 mysql 서비스가 동일한 사용자와 비밀번호를 사용하는 경우, 그리고 당신은 하나의 mysql에만 로그인하고 싶습니다

잘못된 서비스에 로그인하지 않도록 mysqlxxxx.sock 경로를 관리해야합니다..

전체적으로, 동일한 서버에서 많은 mysql 서비스를 실행할 때 비밀번호를 다르게 유지하는 것이 좋습니다..

답장을 남겨주세요