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


322

내 문제는 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다시. 그러나 암호를 묻는 메시지가 표시되지 않습니다. 관리자 암호를 요구하지 않습니까?


나는 같은 문제를 겪었다. 방금 해결했습니다. stackoverflow.com/questions/18150858/…
로버트


서버를 재부팅 한 다음 mysql 서비스를 다시 시작하면 해결됩니다
bowpunya

@Anto 이것은 복제본이 아닙니다. 이것은 /var/run/mysqld/mysqld.sock누락되었습니다. 연결 한 문제에 해당 파일이 있습니다.
motorbaby

여기 또는 다른 곳에서 답을 찾지 못하면 문제를 해결할 수 없습니다. 새 프로젝트이므로 PostgreSQL로 전환했으며 작동합니다! :-)
James Bradbury

답변:


194

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

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 프로세스를 실행하는 사용자가 접근 할 수 있어야합니다.


15
kill -9;를 사용하지 않는 것이 좋습니다 . 그것에 도달하기 전에 시도해야 할 몇 가지 방법이 있습니다.
Ignacio Vazquez-Abrams

@dot 파일 루트 'find'에서 이것을 실행하십시오. -name mysqld.sock '. / var / run 이외의 장소에서 소켓 파일을 보았습니다. 찾은 파일이있는 곳을 가리 키도록 my.cnf 파일을 편집해야 할 수도 있습니다.
Ray

@ ray, 다른 방법으로 원래 명령을 실행하려고했습니다 (다른 사이트에서 우분투 관련 게시물을 찾았습니다 ..). 내가 실행 한 명령은 "sudo service mysql stop"및 "sudo mysqld --skip-grant-tables"입니다. 두 번째 명령을 수행하면 "InnoDB : ./ibdata1을 잠글 수 없습니다. 오류 : 11"오류가 발생합니다. 이 ./ibdata1 파일을 찾을 수 없습니다 ... InnoDB : 아직 다른 mysqld 프로세스가 없는지 확인하십시오
dot

2
@dot run ps -aux | grep mysqld다른 mysql 프로세스가 실행 중인지 확인
Ray

@레이. 나는 남자의 머리카락을 rippng 해요. 나는 mysql을 날려 버리고 다시 시도하기로 결정했다.
dot

251

이 명령을 사용해보십시오

sudo service mysql start

+1 my.cnf가 mysql 서비스에 의해 올바른 디렉토리를 가리키고 있음
wruckie

허용 된 답변을 시도했지만 mysql.sock을 찾을 수 없었습니다. 감사합니다
Giovanne Afonso

1
내가 사용해야했다sudo service mysqld start
개빈 밀러

10
sudo apt-get install mysql-server이미 설치하지 않은 경우 :)
aimme

17
이 문제에 부딪 치면 다른 것을 테스트하기 전에 먼저이 간단한 명령을 먼저 실행하십시오. 몇 초 밖에 걸리지 않으며 서버가 단순히 실행 중이 아니며 시작한 후에도 문제가 없다면 자동 시작하지 않습니다. 그러면 해결해야 할 실제 문제가됩니다.
Lizardx

137

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

ps -A|grep mysql

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

sudo pkill mysql

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

ps -A|grep mysqld

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

sudo pkill mysqld

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

service mysql restart
mysql -u root -p

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


여러분, 저는 이것을 고치려고 웹 전체를 운영하고있었습니다. 내 문제는 도커를 설정하려고한다는 것입니다. 이전에 docker 외부의 mysql에서 사용했던 mysql 데이터 디렉토리를 사용하고 싶었습니다 ... ps 명령이 최고였습니다!
Michael

3
거의 4 시간 이상 웹을 실행 한 후에 마침내 작동했습니다. 최고 답변이어야합니다 : +1 :
Shivam Gaur

4
제어 프로세스가 오류 코드와 함께 종료되어 mysql.service에 대한 작업이 실패했습니다. 자세한 내용은 "systemctl status mysql.service"및 "journalctl -xe"를 참조하십시오.
John Joe

1
제어 프로세스가 오류 코드와 함께 종료되어 mysql.service에 대한 작업이 실패했습니다. 자세한 내용은 "systemctl status mysql.service"및 "journalctl -xe"를 참조하십시오.
Adib Aroui

Tnx, 시간 절약 해
Aleksandur Atanasov

41

해결 방법이 더 쉽습니다.

  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:)

4
mysql.sock 파일을 어떻게 찾습니까? find / -name 'mysql.sock'을 시도했지만 아무것도 반환하지 않습니다.
Matthew Lock

2
@MatthewLock 먼저, mysql이 실행 중인지 확인하십시오 ( "ps aux | grep mysql"에 의해). 그렇지 않으면 mysql.sock이 나타나지 않습니다. 둘째, 사용 mysql.sock의 위치를 시스템에 당신에게 모든 소켓을 제공하는 "찾기 / 타입의 sudo는"
narengi

35
의 출력에 sudo find / -type s포함되어 있지 않으면 mysql.sock어떻게됩니까?
jeff

1
효과가있다. 그러나 지난 몇 년 동안 왜 이러한 개발자들이이 일을하지 않았는지 모르겠습니다.
Yi Jiang

2
"find / -type s"를 통해 mysql.sock의 위치를 ​​파악하기 어려운 경우 "mysql_config --socket"명령을 사용하십시오. 당신은 그것을 설치할 수는 sudo apt-get을 libmysqlclient-dev에 설치
alexche8

26

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

우분투의 경우 :

sudo service mysql start;

CentOS 또는 RHEL의 경우 :

sudo service mysqld start;

이것에 의해 처음으로 확인 sudo systemctl status mysql.service하고 sudo systemctl start mysql.service. 이것은 저에게 효과적입니다
Byeongin Yoon

16

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

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

감사합니다-수정했습니다. mysql 서비스를 다시 시작할 때마다 디렉토리를 다시 만들고 소유권을 재설정해야합니다. 공식적으로 어디에서나 오류가 발견되지 않았거나 여기에 링크를 게시했을 것입니다 :)
djoe

1
이것을 시도하지는 않았지만 아마도 도움이 될 것입니다 : 새 파일 /etc/tmpfiles.d/mysql.conf : # systemd tmpfile settings for mysql # See tmpfiles.d(5) for details 를 만든 다음 d /var/run/mysqld 0755 mysql mysql - 재부팅 후 mysql이 정상적으로 시작됩니다. 이것은 bugs.launchpad.net/ubuntu/+source/mysql-5.6/+bug/1435823 의 의견 3에 있습니다. MySQL 5.7에서이 문제가 발생하면 Launchpad 에 의견을 보내주십시오. 문제를 해결하는 사용자가 많을수록 더 많은 관심을 받게됩니다.
motorbaby

나를 위해 일했다 ... mysqld가 아닌 사용자 이름으로 mysql을 사용해야했다
Evan Parsons

/etc/tmpfiles.d/mysql.confmotorbaby의 의견 에 따라 줄을 추가하면 이 문제가 해결되었습니다. Centos 7 OS에서을 사용 mysql Ver 15.1 Distrib 10.3.11-MariaDB,합니다.
turrican_34

이것은 나를 위해 문제를 해결했습니다.
시카 타

14

다음 코드를 복사하여 붙여 넣으십시오 : 이것은 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

Can't connect위의 명령을 실행하려고 할 때 동일한 오류가 발생합니다.
cjmling

우분투를 실행하는 사람들을 위해 내가 발견 한 것. /etc/init.d/mysqld start를 사용하여 mysqld를 시작하면이 문제가 발생합니다. 대신 mysql start 서비스를 사용하면 괜찮습니다. 화나게했지만 결국 알아 냈습니다.
Adam Short

11

동일한 오류가 발생하여 패키지 업그레이드로 인한 것으로 나타 났으므로 시스템을 다시 시작한 후 오류가 해결되었습니다.

SQL 라이브러리 / 패키지 업데이트로 인해 오류가 발생했다고 생각하므로 업그레이드를 수행하는 경우 시도하십시오. :)


1
다시 설치 (또는 업그레이드) 한 후이 작업을 수행했습니다. 더 이상 소켓 메시지가 없습니다. 감사!
wraithie

8

이 문제에는 많은 이유가 있지만 때로는 mysql 서버를 다시 시작하면 문제가 해결됩니다.

sudo service mysql restart

7

우분투에서 XAMPP 사용하기 :

  1. 라는 폴더 만들기 의 mysqld 내부 는 / var / 실행 디렉토리. 명령을 사용하여이를 수행 할 수 있습니다 sudo mkdir /var/run/mysqld.

  2. XAMPP 서버가 시작될 때 작성된 mysql.sock 파일에 대한 기호 링크를 작성하십시오 . 명령을 사용할 수 있습니다 sudo ln -s /opt/lampp/var/mysql/mysql.sock /var/run/mysqld/mysqld.sock.

참고 : mysql.sock의 파일 서버가 시작될 때 생성되고 서버가 중지 될 때, 그래서 때로는 링크가 당신이 깨진 것처럼 보일 수 있습니다 생성하지만만큼 당신이 사용하여 서버를 시작으로 작업을해야 제거하거나 sudo /opt/lampp/lampp start또는 기타 방법.

  1. 서버가 아직 실행 중이 아닌 경우 서버를 시작하고 프로그램을 다시 실행하십시오.

행운을 빕니다! 이번엔 당신이 그것을 멀리 바랍니다.


@MohsinKhan은 localhost / phpmyadmin으로 가서 거기에서 데이터베이스를 가져옵니다
Robert Odoch

6

사용자로드 단계의 대답이 저에게 효과적이었습니다. 때로는 /etc/mysql/my.cnf클라이언트에 줄을 추가 하여 파일을 편집해야합니다.

[client]
password = your_mysql_root_password
port  = 3306
host  = 127.0.0.1
socket  = /var/lib/mysql/mysql.sock

이것은 나에게 :mysql: unknown variable 'Host=127.0.0.1'
Splaktar

@ Splaktar : 오타가 있습니다. Host소문자 여야 host하며 작동합니다. 또한이 솔루션은 저에게 효과적이었습니다.
Mohammad Faisal

Brilliant-이것은 나와 내 도커 환경에서 작동합니다. 필자의 경우 도커 mysql 컨테이너 ip 172.17.xx
InforMedic

6

* 오류 : '소켓'/var/run/mysqld/mysqld.sock '을 통해 로컬 MySQL 서버에 연결할 수 없습니다 (2)'

해결책

마지막으로 mysql을 제거했다가 다시 설치하십시오. **

  • sudo apt-get mysql-server를 제거하십시오.
  • sudo apt-get mysql-client를 제거하십시오.
  • sudo apt-get mysql-common을 제거하십시오
  • sudo apt-get phpmyadmin를 제거하십시오

그런 다음 다시 설치하십시오

  • sudo apt-get 설치 mysql-server-5.6

이 작업 후에는 164MB의 추가 디스크 공간이 사용됩니다.

  • 계속 하시겠습니까? [Y / n] Y 설치를 완료하려면 YES를 누르십시오.

...... .......

  • 마침내 당신은 이러한 라인을 얻을 것입니다 ....

    libhtml-template-perl 설정 (2.95-1) ...

    mysql-common-5.6 (5.6.16-1 ~ exp1) 설정 ... libc-bin (2.19-0ubuntu6)에 대한 처리 트리거 우레아 헤드 (0.100.0-16)에 대한 처리 트리거 ...

  • 그리고

    root @ ubuntu1404 : ~ # mysql -u root -p (모든 암호에 대해 먼저 U를 사용해야합니다)

  • 암호를 입력:

  • 참고 : 입력 한 비밀번호는 mysql의 설치 시간 비밀번호와 동일해야합니다 (예 : .root, system, admin, rahul 등)

    그런 다음 입력

  • USE rahul_db (데이터베이스 이름);

감사.**


답변 품질을 개선하십시오
Mo.

이것은 여러 mysql 버전이 설치되어 있기 때문에 저에게 효과적이었습니다. 또한 제거하십시오 mysql-server-5.6/5.5, mysql-client-5.6/5.5. 감사!
Luuk Skeur

GOT는 E: Package 'mysql-server-5.6' has no installation candidate, 그렇지 우분투 18.04에 존재
줄리우 세자르 소아리스 이스핀 돌라

6

액세스 할 수없는 소켓 파일 경로가 '/var/run/mysqld/mysqld.sock'과 동일한 지 확인하십시오. 그렇지 않으면 경로를 사용자 경로로 변경하십시오. mysqld를 중지

$ sudo /etc/init.d/mysqld stop

프로세스가 여전히 실행중인 경우

$ sudo pkill -9 mysqld

소켓이 생성 될 mysql 디렉토리를 제거하십시오. 나를 위해 그것은 제거 할 수 없었으므로 강제로 제거해야했습니다.

$ sudo mkdir -p /var/run/mysqld

소유권을 소유권으로 설정

$ sudo chown mysql:mysql /var/run/mysqld

mysql 시작

$ sudo /etc/init.d/mysql start

MySQL을 연결하려고

$ sudo mysql -u dbuser -p

그렇습니다. 나는 2 월 14 일 19시 11 분 56 초에 답변 한 것과 동일한 답변입니다 (아래 참조)
Ingo

당신은 생명의 은인입니다.
Sahib Khan

5

MySQL 서버가 시작되지 않은 것 같습니다. 따라서 다음 명령 중 하나를 사용하여 서버를 시작하십시오.

#services mysql start

또는

#/etc/init.d/mysql start

5

임시 솔루션

누군가이 문제에 직면했을 수 있습니다. 우분투 14 에서 Mysql Workbench 를 사용하고 있으며이 오류가 발생했습니다.

mysqldump: Got error: 2002: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) when trying to connect

sudo find / -type s내 경우에는 을 실행하여 소켓 파일을 찾으십시오./run/mysqld/mysqld.sock

그래서 방금 tmp디렉토리 에이 파일에 대한 링크를 만들었습니다 .

sudo ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock

보시다시피 파일 위치는 /tmp폴더 아래에 있으므로 확실히 제거됩니다. .sock파일 위치 를 변경할 수 있습니다 . @ user3002884 답변을 참조하십시오.
Bilal

알다시피, 나는 당신의 대답을 완성하고 있었기 때문에 다른 사용자가 폴더처럼 솔루션이 일시적이라는 것을 알기 전에
Alex Burdusel

당신은 내 생명을 구했습니다 :)
Mashpy Rahman

4

당신이 찾을 수 mysqld.sock있는 /var/run/mysqld이미 설치 한 경우 mysql-serversudo apt-get install mysql-server


4

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

/etc/my.cnf이 줄 을 추가하십시오 :

[client]
socket=/var/lib/mysql/mysql.sock <= this path should be also same as is[mysqld]

다음을 사용하여 서비스를 다시 시작하십시오. service mysql restart

이것은 나를 위해 일했다


4

이것은 이미 몇 번 언급되었지만 즉시 나를 위해 일했습니다.

서비스 mysql restart


이것이 단순한 "mysql"명령을 사용하는 것과 다른 점이 흥미
롭다

3

내 경우에는 두 개의 mysqld 프로세스가 실행 중입니다. pkill -9 mysqld를 사용하여 선택적 프로세스를 종료했습니다.


프로세스를 죽이는 '스도'를 추가해야했습니다.
noti

3

시스템에 많은 데이터베이스와 테이블이 있고 innodb_file_per_tablemy.cnf에 설정 하면 mysql 서버에 열린 객체 / 파일 (또는 이러한 객체의 설명자)이 부족했을 수 있습니다. 새로운 최대 수를 설정하십시오 와

open-files-limit = 2048

mysql을 다시 시작하십시오. 이 접근법은 소켓이 전혀 생성되지 않을 때 도움이 될 수 있지만 실제로 이것은 실제 문제가 아닐 수도 있습니다. 근본적인 문제가 있습니다.


2

우분투 14.10 에서이 문제가 발생했습니다.

mysql-server더 이상 설치되지 않은 턴 (어떻게 제거 되었음)이지만 깨진 패키지와 종속성 문제 / 충돌이 있었기 때문에 설치할 수 없었습니다.

결국 나는 mysql을 다시 설치해야했다.

sudo apt-get remove mysql-client
sudo apt-get install mysql-server


2

내 솔루션;

우분투 18.04 (WSL)

/etc/mysql/my.cnf

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

/etc/mysql/mysql.conf.d/mysqld.cnf

[mysqld]
user            = mysql
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
port            = 3306

포트를 변경했습니다. 그것은 나를 위해 일했다. 다른 포트를 쓸 수 있습니다. 예 3355


2

이 오류가 발생하는 이유

나는 mysql 라이브러리의 새로운 업데이트를 받았으므로 이러한 오류가 발생하면 Kubuntu OS를 업데이트했습니다.


내가 시도한 명령과 수정 방법.

MySql 서버가 올바르게 실행 중이지만 제공을 연결하려고 할 때

Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'.

/var/run/mysqld/mysqld.sock'.이 디렉토리를 확인 했습니다. 내 파일이 존재하지 않았습니다.

나는 또한이 명령을 연결하려고했지만 나에게 효과가 없었습니다.

 mysql -h 127.0.0.1 -P 3306 -u root -p

 sudo service mysql start

2 시간 동안 낭비한 후 해결책을 찾았습니다.

sudo apt-get clean
sudo apt-get update
sudo apt-get upgrade -f

그 후 모든 것이 나를 위해 고정되었습니다.


이 문제를 해결하는 데 도움이되었습니다. 나는 내가 가진 모아서 문제 ... 어떻게 연관되는지를 이해 해달라고
CAMO

1

변화 host에를127.0.0.1 나를 일했습니다.

파일을 편집하고 /etc/mysql/my.cnf아래에 언급 된 행을 섹션에 추가하십시오.client

[client]
port  = 3306
host  = 127.0.0.1
socket  = /var/lib/mysql/mysql.sock

당신이 그것으로 끝난 후. 다음 명령을 실행하십시오.

sudo service mysql start

이 친구가 나를 도와주었습니다 :)
Bhargav Nanekalva

@NBhargav 나는 당신이 u 문제를 해결할 수있어서 너무 행복합니다 .. 건배 친구 .. 😇😇
Dulith De Costa

1

또한 mysql 구성을 확인합니다. 내 서버 에서이 문제가 발생했지만 너무 성급해서 내 컴퓨터에 대해 innodb_buffer_pool_size를 잘못 구성했습니다.

innodb_buffer_pool_size = 4096M

일반적으로 최대 2048까지 잘 실행되지만 4 기가를 지원하는 데 필요한 메모리가없는 것 같습니다.

나는 이것이 다른 mysql 구성 설정에서도 발생할 수 있다고 생각합니다.


1

CentOS VPS에서도 비슷한 문제가있었습니다. MySQL이 시작된 직후에 시작되지 않거나 계속 중단되는 경우 다음 단계를 시도하십시오.

1) my.cnf 파일 (/mine/my.cnf에있는 광산)을 찾아 다음 줄을 추가하십시오.

innodb_force_recovery = X

X를 1에서 6 사이의 숫자로 바꾸고 1부터 시작하여 MySQL이 시작되지 않으면 증가합니다. 4, 5 또는 6으로 설정하면 데이터를 삭제할 수 있으므로주의해서 http://dev.mysql.com/doc/refman/5.7/en/forcing-innodb-recovery.html을 읽으십시오. 을 .

2) MySQL 서비스를 다시 시작하십시오. SELECT 만 실행되며 현재는 정상입니다.

3) mysqldump를 사용하여 모든 데이터베이스 / 스키마를 하나씩 덤프하십시오. 나중에 압축을 풀어야하므로 덤프를 압축하지 마십시오.

4) 루트에 개별 파일을 유지하면서 / var / lib / mysql 내의 bd 디렉토리 만 이동 (또는 삭제!)합니다.

5) MySQL을 중지 한 다음 1)에서 추가 한 줄의 주석을 해제하십시오. MySQL을 시작하십시오.

6) 3)에 버려진 모든 bd를 복구하십시오.

행운을 빕니다!


1

터미널 프롬프트에서 다음을 시도하십시오.

sudo mysql

이를 통해 새 사용자를 작성하고 액세스 권한이 필요한 특정 데이터베이스에 대해 원하는 권한을 부여 할 수 있습니다.

Mysql 5.7은 몇 가지 사항을 변경했으며 기본적으로 auth_socket 플러그인 (mysql_native_password가 아닌)을 사용하여 계정 해킹으로부터 보호합니다. 플러그인 필드를 루트로 설정하여이를 대체 할 수 있지만, 적절한 이유가 없으면 보호를 우회해서는 안됩니다. 특히 어쨌든 sudo mysql더 쉬운 경우 mysql -u root -p.

Raspberry Pi 도움말 사이트 에서 모든 곳의 정보를 찾았습니다 . Lubuntu 18.04가 몇 시간 동안 나에게 지옥을 괴롭힌 후 매력처럼 일했습니다.


1

먼저 dir / var / run / mysqld를 작성하십시오.

명령으로 :

mkdir -p /var/run/mysqld

그런 다음 디렉토리에 rigths를 추가하십시오

chown mysql:mysql /var/run/mysqld

이 시도 후

mysql -u root

1

나는 똑같은 문제가 있었다. 한 시간 동안 고군분투 한 후 mysql-common, mysql-client, mysql-server를 다시 설치하지 않고 수정하는 방법을 찾았습니다.

우선, "/ var / run / mysqld"로 가십시오. mysql.sock이 존재하지 않음을 알 수 있습니다. 전체 mysqld 디렉토리를 제거하고 다시 작성하여 필요한 권한을 제공하십시오.

# rm -rf /var/run/mysqld && mkdir /var/run/mysqld && chown mysql /var/run/mysqld/

이제 mysql 프로세스를 완전히 종료하십시오. 서비스를 종료 한 후에도 "/etc/init.d/mysql status"명령을 실행할 때 "페이지 클리너 대기 중"이 표시 될 수 있습니다.

서비스를 완전히 종료하려면

# pkill -9 mysqld

프로세스가 종료되면 다음을 사용하여 다시 시작하십시오.

# /etc/init.d/mysql start

그리고 당신은 그것이 잘 작동하는 것을 볼 수 있습니다! 또한 중지하는 데 아무런 문제가 없습니다.

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