[mysql] 오류 : ”/var/run/mysqld/mysqld.sock 소켓을 통해 로컬 MySQL 서버에 연결할 수 없습니다 ‘(2)’— 누락 된 /var/run/mysqld/mysqld.sock

내 문제는 mysql 설치에서 더 이상 루트로 로그인 할 수 없기 때문에 시작되었습니다. 암호를 설정하지 않고 mysql을 실행하려고했지만 … 명령을 실행할 때마다

# mysqld_safe --skip-grant-tables &

프롬프트가 다시 표시되지 않습니다. 이 지침에 따라 비밀번호를 복구 하려고했습니다 .

화면은 다음과 같습니다.

root@jj-SFF-PC:/usr/bin# mysqld_safe --skip-grant-tables
120816 11:40:53 mysqld_safe Logging to syslog.
120816 11:40:53 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql

암호를 재설정하기 위해 SQL 명령을 입력하라는 메시지가 표시되지 않습니다.

CTRL+ 를 눌러 죽이면 C다음 메시지가 나타납니다.

error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)'

Check that mysqld is running and that the socket: '/var/run/mysqld/mysqld.sock' exists!

명령을 다시 시도하고 충분히 길게두면 다음과 같은 메시지가 나타납니다.

root@jj-SFF-PC:/run/mysqld# 120816 13:15:02 mysqld_safe Logging to syslog.
120816 13:15:02 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
120816 13:16:42 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended

[1]+  Done                    mysqld_safe --skip-grant-tables
root@jj-SFF-PC:/run/mysqld#

그러나 다음을 수행하여 루트로 로그인하려고하면 다음을 수행하십시오.

# mysql -u root

다음과 같은 오류 메시지가 나타납니다.

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

확인했는데 /var/run/mysqld/mysqld.sock파일이 없습니다. 폴더는 있지만 파일은 아닙니다.

또한, 이것이 도움이되는지 아닌지 모르겠지만, 나는 달렸고 find / -name mysqld그것을 생각해 냈습니다.

/var/run/mysqld - folder
/usr/sbin/mysqld - file
/run/mysqld - folder

저는 Linux와 MySQL을 처음 사용하므로 이것이 정상적인 지 모르겠습니다. 그러나 도움이 될 수 있도록이 정보를 포함시키고 있습니다.

마침내 mysql을 제거하고 다시 설치하기로 결정했습니다.

apt-get remove mysql-server
apt-get remove mysql-client
apt-get remove mysql-common
apt-get remove phpmyadmin

위와 같은 순서로 모든 패키지를 다시 설치 한 후 phpmyadmin 설치 중에 동일한 오류가 발생했습니다.

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

그래서 제거 / 다시 설치를 다시 시도했습니다. 이번에는 패키지를 제거한 후 모든 mysql 파일과 디렉토리의 이름을 수동으로 mysql.bad각각의 위치 로 바꿨습니다 .

/var/lib/mysql
/var/lib/mysql/mysql
/var/log/mysql
/usr/lib/perl5/DBD/mysql
/usr/lib/perl5/auto/DBD/mysql
/usr/lib/mysql
/usr/bin/mysql
/usr/share/mysql
/usr/share/dbconfig-common/internal/mysql
/etc/init.d/mysql
/etc/apparmor.d/abstractions/mysql
/etc/mysql

그 때 나는 다시 시도 mysql-server하고 mysql-client다시. 그러나 암호를 묻는 메시지가 표시되지 않습니다. 관리자 암호를 요구하지 않습니까?



답변

시스템에서 모든 소켓 파일을 찾으려면 다음을 실행하십시오.

sudo find / -type s

내 MySQL 서버 시스템에서 소켓을 열었습니다. /var/lib/mysql/mysql.sock

소켓이 열려있는 위치를 찾으면 소켓 파일 경로를 사용하여 /etc/my.cnf 파일에 행을 추가하거나 편집하십시오.

socket=/var/lib/mysql/mysql.sock

때때로 명령 행 실행 파일을 시작한 시스템 시작 스크립트가 플래그를 지정합니다 --socket=path. 이 플래그는 my.cnf 위치를 대체 할 수 있으며, 그 결과 my.cnf 파일이있는 소켓을 찾을 수 없습니다. 그런 다음 mysql 명령 행 클라이언트를 실행하려고하면 소켓을 찾기 위해 my.cnf를 읽지 만 서버가 생성 한 위치에서 벗어나므로 소켓을 찾지 못합니다. 따라서 소켓이 어디에 있는지 신경 쓰지 않으면 my.cnf를 일치하도록 변경하면됩니다.

그런 다음 mysqld 프로세스를 중지하십시오. 이를 수행하는 방법은 시스템마다 다릅니다.

Linux 시스템의 수퍼 유저 인 경우 Mysql 설정이 사용하는 특정 방법을 모르는 경우 다음 중 하나를 시도하십시오.

  • service mysqld stop
  • /etc/init.d/mysqld stop
  • mysqladmin -u root -p shutdown
  • 일부 시스템은 mysql을 중지하는 우아한 방법을 갖도록 설정되지 않았으며 (또는 어떤 이유로 mysql이 응답하지 않음) 다음 중 하나를 사용하여 mysql을 강제 종료 할 수 있습니다.
    • 한 단계 : pkill -9 mysqld
    • 두 단계 (최소 선호) :
      • 와 mysql을의 프로세스 ID 찾기 중 하나 pgrep mysql또는ps aux | grep mysql | grep -v grep
      • 프로세스 ID가 다음과 같이 4969종료 되었다고 가정kill -9 4969

이 작업을 수행 한 후 pid 파일을 찾아서 /var/run/mysqld/삭제할 수 있습니다.

소켓에 대한 권한은 mysqld 사용자가 실행하고있는 모든 것이 읽기 / 쓰기가 가능한지 확인하십시오. 쉬운 테스트는 전체 읽기 / 쓰기로 열어서 여전히 작동하는지 확인하는 것입니다.

chmod 777 /var/run/mysqld/mysqld.sock

문제가 해결되면 보안 설정에 따라 소켓의 권한과 소유권을 조정할 수 있습니다.

또한 소켓이있는 디렉토리는 mysqld 프로세스를 실행하는 사용자가 접근 할 수 있어야합니다.


답변

이 명령을 사용해보십시오

sudo service mysql start


답변

이 오류는 mysql을 여러 번 설치하여 발생합니다. 다음 명령을 실행하십시오 :

ps -A|grep mysql

다음을 사용하여 프로세스를 종료하십시오.

sudo pkill mysql

그런 다음 명령을 실행하십시오.

ps -A|grep mysqld

또한 다음을 실행하여이 프로세스를 종료하십시오.

sudo pkill mysqld

이제 다음 명령을 실행하면됩니다 :

service mysql restart
mysql -u root -p

mysql을 다시 잘 작동 시키십시오.


답변

해결 방법이 더 쉽습니다.

  1. 먼저, mysql.sock파일이 있는 곳 (터미널에서 “sudo find / -type s”)을 찾아야합니다 . 내 경우에는/opt/lampp/var/mysql/mysql.sock
  2. 터미널 sudo Nautilus
    시동 및 문제
    슈퍼 사용자 권한으로 파일 관리자를 시작합니다.
  3. 노틸러스에서 mysql.sock파일이 있는 곳으로 이동합니다
  4. 파일을 마우스 오른쪽 버튼으로 클릭하고 링크 만들기를 선택하십시오.
  5. 링크 파일 이름을 mysqld.sock바꾼 다음 파일을 마우스 오른쪽 버튼으로 클릭하고 잘라 내기
  6. /var/run라는 폴더로 이동하여 mysqld입력하십시오.
  7. 이제 마우스 오른쪽 버튼으로 클릭하고 링크 파일 붙여 넣기
  8. 짜잔! 이제 mysqld.sock파일이 있습니다 /var/run/mysqld/mysqld.sock🙂

답변

설치 후 MySQL 서비스를 시작하면됩니다.

우분투의 경우 :

sudo service mysql start;

CentOS 또는 RHEL의 경우 :

sudo service mysqld start;


답변

MySQL 5.6 및 5.7의 Ubuntu에는 var/run/mysqld/MySQL 서비스가 중지되거나 재부팅 될 때마다 사라지는 버그가 있습니다 . 이렇게하면 MySQL이 전혀 실행되지 않습니다. 완벽하지는 않지만이 해결 방법을 찾았지만 최소한 중지 / 재부팅 후 실행됩니다.

mkdir /var/run/mysqld/
chown mysqld /var/run/mysqld/


답변

다음 코드를 복사하여 붙여 넣으십시오 : 이것은 mysql 데이터베이스가 제대로 설치되지 않았을 때 터미널에서 서버 내부에서 수행해야하며 다음과 같은 오류가 발생하면 ‘소켓을 통해 로컬 MySQL 서버에 연결할 수 없습니다’/ var / run / mysqld / mysqld.sock ‘(2)’.

MySql 중지

sudo /etc/init.d/mysqld stop

다시 시작하거나 시작

sudo /etc/init.d/mysqld restart or sudo /etc/init.d/mysqld start

이와 같은 링크를 만들어 시스템에 연결하십시오

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

mysql을 구성하는 데 필요한 모든 프로세스를 안내하는 보안 설치를 실행하십시오.

/usr/bin/mysql_secure_installation