[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
- 와 mysql을의 프로세스 ID 찾기 중 하나
- 한 단계 :
이 작업을 수행 한 후 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을 다시 잘 작동 시키십시오.
답변
해결 방법이 더 쉽습니다.
- 먼저,
mysql.sock
파일이 있는 곳 (터미널에서 “sudo find / -type s”)을 찾아야합니다 . 내 경우에는/opt/lampp/var/mysql/mysql.sock
- 터미널
sudo Nautilus
시동 및 문제
슈퍼 사용자 권한으로 파일 관리자를 시작합니다. - 노틸러스에서
mysql.sock
파일이 있는 곳으로 이동합니다 - 파일을 마우스 오른쪽 버튼으로 클릭하고 링크 만들기를 선택하십시오.
- 링크 파일 이름을
mysqld.sock
바꾼 다음 파일을 마우스 오른쪽 버튼으로 클릭하고 잘라 내기 /var/run
라는 폴더로 이동하여mysqld
입력하십시오.- 이제 마우스 오른쪽 버튼으로 클릭하고 링크 파일 붙여 넣기
- 짜잔! 이제
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