Programming

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

procodes 2020. 2. 25. 22:58
반응형

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


Ubuntu 12.04 LTS (Precise Pangolin) LAMP설치 한 다음 phpMyAdmin에 루트 비밀번호를 설정했습니다 . 비밀번호를 잊어 버려 로그인 할 수 없습니다. 터미널을 통해 비밀번호를 변경하려고하면 다음과 같은 결과가 나타납니다.

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

이 문제를 어떻게 해결할 수 있습니까? LAMP를 열거 나 제거하거나 다시 설치할 수 없습니다.


한 번이 문제가 발생하여을 설치하여 해결 mysql-server했으므로 mysql-server, mysql-client또는 다른 것이 아닌 을 설치했는지 확인하십시오 .

이 오류는 파일 /var/run/mysqld/mysqld.sock이 존재하지 않음을 의미 하며, 설치하지 않으면 mysql-server파일이 존재하지 않습니다. 하지만 mysql-server이미 설치되어 실행중인 경우 구성 파일을 확인해야합니다.

구성 파일은 다음과 같습니다.

/etc/my.cnf
/etc/mysql/my.cnf
/var/lib/mysql/my.cnf

에서 /etc/my.cnf, 소켓 파일 설정이있을 수 있습니다 /tmp/mysql.sock와의 /etc/mysql/my.cnf소켓 파일 설정을 할 수있다 /var/run/mysqld/mysqld.sock. 따라서 제거하거나 이름을 바꾸고 /etc/mysql/my.cnfmysql을 사용하게 /etc/my.cnf하면 문제가 해결 될 수 있습니다.


이 시도:

mysql -h 127.0.0.1 -P 3306 -u root -p <database>

또한 (실행 중인지 확인) :

telnet 127.0.0.1 3306 

아마도 ( Linux 배포판 에 따라) my.cnf파일 의 구성이 잘못되었을 수 있습니다./etc/somewhere


나는이 대답을 모두보고 있어요,하지만 아무도 할 수있는 옵션이 제공하지 암호 재설정더 허용 대답을 . 실제 질문은 암호 잊어 버렸 으므로 재설정해야하며 이러한 답변의 대부분이 암시하는 것처럼 암호가 실행 중인지 (설치되어 있는지 여부) 확인하지 않아야합니다.


비밀번호를 재설정하려면

다음 단계를 따르십시오 (현재 비밀번호를 잊어 버린 경우에 도움이 될 수 있으며 현재 상황이 아닌 경우에도 비밀번호를 입력 할 수 있음)

  1. 중지 mysql

    sudo /etc/init.d/mysql stop
    

    또는 다른 배포판의 경우 :

    sudo /etc/init.d/mysqld stop
    
  2. 안전 모드에서 MySQL 시작

    sudo mysqld_safe --skip-grant-tables &
    
  3. 루트를 사용하여 MySQL에 로그인

    mysql -uroot
    
  4. 사용할 MySQL 데이터베이스를 선택하십시오

    use mysql;
    
  5. 비밀번호 재설정

    -- MySQL version < 5.7
    update user set password=PASSWORD("mynewpassword") where User='root';
    
    -- MySQL 5.7, mysql.user table "password" field -> "authentication_string"
    
    update user set authentication_string=password('mynewpassword') where user='root';
    
  6. 권한을 플러시

    flush privileges;
    
  7. 서버를 다시 시작하십시오

    quit
    
  8. 서버를 중지했다가 다시 시작하십시오.

    우분투와 데비안 :

    sudo /etc/init.d/mysql stop
    ...
    sudo /etc/init.d/mysql start
    

    CentOS, Fedora 및 RHEL에서 :

    sudo /etc/init.d/mysqld stop
    ...
    sudo /etc/init.d/mysqld start
    
  9. 새 비밀번호로 로그인

    mysql -u root -p
    
  10. 새로운 비밀번호를 입력하고 아무 일도 일어나지 않은 것처럼 서버를 다시 즐기십시오

이것은 MySQL 루트 암호 재설정 에서 가져 왔습니다 .


다음 단계를 시도했습니다.

  1. 로그인 super user또는 사용sudo
  2. gedit를/etc/mysql/my.cnf 사용하여 열기
  3. 를 찾아서 bind-address값을 데이터베이스 서버 호스트 시스템의 IP 주소로 변경하십시오. 나를 위해, localhost또는127.0.0.1
  4. 파일을 저장하고 닫습니다.
  5. 터미널로 돌아와서 실행 sudo service mysql start

그리고 그것은 나를 위해 일했습니다.


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

mysql.server start

Mac에 있고 brew를 사용하여 mysql을 설치하는 경우 다음을 사용하십시오.

brew services start mysql

나는 비슷한 문제가 있었다. mysql이 시작되지 않습니다 :

sudo service mysql start
start: Job failed to start

의류를 사용 중지 한 경우 :

sudo aa-complain /etc/apparmor.d/*

문제가 사라졌습니다. 문제는 mysqld가 /run/mysqld/mysqld.sock에 액세스하려고 시도했지만 apparmor 프로파일이 /var/run/mysqld/mysqld.sock(/var/run이 / run에 심볼릭 링크되어 있음)에 대한 권한 만 부여했기 때문입니다. 똑같다). 왜 mysqld가 모든 구성 파일에 설정되어 있기 때문에 var 경로를 사용하지 않는지 확실하지 않지만 /etc/apparmor.d/usr.sbin.mysqld에 다음을 추가하여 문제를 해결할 수 있습니다

/run/mysqld/mysqld.pid rw,
/run/mysqld/mysqld.sock rw,

나는 mysql프로세스 를 죽여서 이것을 해결했다 .

ps -ef | grep mysql
kill [the id]

그런 다음 서버를 다시 시작했습니다.

sudo /etc/init.d/mysql restart

그러나 start잘 작동합니다.

sudo /etc/init.d/mysql start

그런 다음로 로그인하여 admin완료했습니다.


제 경우에는 디스크가 가득 차서 mysqld를 더 이상 시작할 수 없었습니다.

mysql 서비스를 다시 시작하십시오.

서비스 mysql restart

또는

서비스 mysql 중지

서비스 MySQL 시작

"stop"명령을 인식하지 못하면 디스크 공간 일 것입니다. mysql이 할당 된 파티션에서 공간을 확보하거나 디스크를 더 크게 만들어야합니다.

디스크 공간을 확인하십시오

df -h


어떻게 든 MySQL 서버 프로세스가 소켓을 만들지 않았거나 클라이언트가 잘못된 위치에서 소켓을 찾고 있습니다.

첫 번째 제안은 MySQL 서버가 실행 중인지 확인하는 것입니다. 두 번째 제안은 MySQL 서버가 다른 호스트에서 실행되고 있습니까? 그렇다면 -h <hostname>터미널에서 MySQL 클라이언트에 플래그를 추가하십시오 .

MySQL이 실제로 실행 중이고 로컬에서 실행중인 경우 my.cnf파일을 확인하십시오 . 같은 줄이 있어야합니다

socket = /var/run/mysqld/mysqld.sock

게시물에서 언급 한 소켓 위치와 일치하는지 확인하십시오.

경험상 가장 가능성이 높은 시나리오는 MySQL 서버가 전혀 실행되지 않거나 터미널에서 MySQL 클라이언트를 실행하는 호스트와 동일한 호스트에서 실행되고 있지 않다는 것입니다.


프로덕션 서버를 다시 시작한 후에도 같은 문제가 발생했습니다. DigitalOcean 드롭 릿에서 Debian 8.1 (Jessie)을 실행하고 있습니다.

이것이 내 문제를 해결하기 위해 한 것입니다.

  1. 파일 /var/run/mysqld/mysqld.sock이 존재 하는지 확인하십시오 . 그렇지 않은 경우 touch /var/run/mysqld/mysqld.sock(필요한 작업) 을 입력하여 수동으로 작성하십시오 .

  2. 따라서 MySQL 프로세스는이 파일을 사용할 수 있습니다. 를 입력하여 해당 파일의 소유권을 변경하십시오 chown mysql /var/run/mysqld/mysqld.sock.

  3. '2'가 완료되면, 다음을 입력하여 MySQL의 서비스를 다시 시작 service mysql restart또는 /etc/init.d/mysql restart.

위의 단계를 수행 한 후 내 문제가 해결되었습니다. 나는이 문제가 거의 없으며 아마도 더 좋은 방법이있을 것이므로 필요한 경우 건설적인 피드백을 제공하십시오. :).


mysql-server가 실행되고 있지 않을 수 있습니다. mysql.server start터미널 에 입력하여 실행되는지 확인하십시오 .


"bind-adress"my.cnf 에서 매개 변수를 확인하십시오 .

그렇지 않으면 다음 명령으로 시도하십시오.

mysql -h 127.0.0.1 -P 3306 -u root -p
  • host의 127.0.0.1경우 -h , 즉 localhost

  • port의 3306경우 -P (대문자로 -P 참고) , 즉 MySQL의 기본 포트


나를 위해 일한 것은 다음과 같습니다.

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

링크가 생성됩니다.


Amazon EC2를 사용 중이고 인스턴스에서이 문제가 발생하면 다음 작업 만하면됩니다.

sudo yum install mysql-server
sudo service mysqld restart

Amazon EC2에는 서버가 설치되어 있지 않으므로 (클라이언트 만 설치됨) 인스턴스에 서버를 설치해야하는 경우

 mysql -u root -p

그것이 작동하는지 확인하십시오.


나는 당신이 오류를 얻을 때마다 생각

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

먼저 mysql데몬이 실행 중인지 확인하는 것이 좋습니다 ... 대부분 기본적으로 실행되지 않습니다. 로 확인할 수 있습니다 /etc/init.d/mysqld status.

실행 중이 아니면 먼저 시작하십시오.

.../etc/init.d/mysqld start.

나는 그것이 110 % 일할 것이라고 확신합니다.


localhost를 사용하는 대신 :

mysql -u myuser -pmypassword -h localhost mydatabase

127.0.0.1 사용

mysql -u myuser -pmypassword -h 127.0.0.1 mydatabase

(또한 -p와 mypassword 사이에 공백이 없음)

즐겨 :)


중요한 데이터베이스의 백업이 있는지 확인한 다음 MySQL 관련 항목을 제거하십시오 .

apt-get remove --purge mysql\*

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

apt-get install mysql-server mysql-client

이것은 나를 위해 일했고 데이터는 유지되었습니다.

PHP MySQL에 오류가 표시되면 PHP MySQL을 다시 설치 해야 할 수도 있습니다 .

apt-get install php5-fpm php5-mysql

최근에 설치 한 경우 설치가 SERVER ... 설치인지 확인해야합니다. mysql-server-5.5 .. 아마도 "mysql"만 설치했을 것입니다. 이것은 서버 대신 클라이언트 일뿐입니다.


당신이있는 경우 XAMPP는 리눅스 시스템에 설치하여 복사하려고 my.cnf에서 파일을 /opt/lampp/etc/my.cnf/etc/my.cnf.

그런 다음 mysql -u root다시 실행 하십시오. 이제 올바른 소켓이 있고 MySQL 클라이언트를 실행할 수 있습니다.


나는이 문제도 가지고 있지만 방금했다 :

sudo service mysql restart 

그것은 나를 위해 일했다.


나는 또한 같은 문제에 직면 mysql server하여 기본적으로 실행 중이 아닌 경우 발생하며 몇 초 후에 다시 중지되므로 $ sudo service mysql start알고 있으면 변경할 수있는 ( ) 명령을 다시 실행하십시오 .

그 사용 명령

$ sudo service mysql start   

(우리가 사용하기 때문에 필요한 경우 사용자 비밀번호를 입력 sudo한 다음)

$ sudo mysql -u root -p          (put user password if required )

지금 당신은 당신의 데이터베이스를 얻었다


필자의 경우 기본 포트 3306이 다른 프로세스에서 사용되어 시작되지 않았습니다. 다른 서비스를 중지하고 수행 한 후 sudo service mysql start정상적으로 작동했습니다. BTW, sudo lsof -Pn -iTCP:3306누가 포트를 사용하고 있는지 확인할 수 있습니다.


내 경우에는 R & D를 수행하여 효과가있었습니다.

사용하여 MySQL에 연결할 수 있습니다

root-debian#mysql -h 127.0.0.1 -u root -p

그러나 그것은 작동하지 않습니다 mysql -u root -p.

my.cnfbind-address 에서 아무것도 찾지 못했습니다 . 그래서 로그인 문제를 일으킨 매개 변수 주석 처리했습니다 .socket=/var/lib/mysql/mysqld.sockmy.cnf

서비스를 다시 시작한 후 정상적으로 작동했습니다.

root@debian:~# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.6.19 MySQL Community Server (GPL)

나는 해결책을 찾았다

명령을 실행 하기 전에 :mysql_secure_installation

  • 1 단계: sudo systemctl stop mariadb
  • 2 단계: sudo systemctl start mariadb
  • 3 단계 : mysql_secure_installation

그런 다음 루트 암호를 묻고 Enter 키누르고 새 루트 암호를 설정 하면 됩니다.


나는 mysql을 재시작 하여이 문제를 해결했다.

/etc/init.d/mysql stop

/etc/init.d/mysql start

그게 다야.


경험상 서버가 먼저 실행되고 있는지 확인한 다음 MySQL 구성을 시도해야한다고 말합니다. 마지막 해결책은 MySQL을 다시 설치하는 것입니다.


터미널을 열고 다음을 입력하십시오.

sudo apt-get purge mysql-client-core-5.6

sudo apt-get autoremove

sudo apt-get autoclean

sudo apt-get install mysql-client-core-5.5

sudo apt-get install mysql-server  

MySQL 데이터베이스 코어 클라이언트와 MySQL 서버 패키지는 모두 동일한 버전 5.5입니다. MySQL Client 5.5와 MySQL Server 5.5는 패키지 관리자에 의해 결정된 Ubuntu 14.04에서 현재 "최상의"버전의 패키지입니다.

MySQL Client 5.6 및 MySQL Server 5.6을 설치하려면 Ubuntu Software Center에서 mysql-client-core-5.6 및 mysql-server-5.6 패키지를 찾을 수도 있습니다. 중요한 것은 클라이언트와 서버 버전 번호가 두 경우 모두 일치한다는 것입니다.

이것은 나를 위해 일했습니다.


내 경우에는, 내가 실행할 때 실제로 mysql 프로세스를 죽일 수 없었던 것 같습니다.

sudo service mysql stop
ps -ef | grep mysql

mysql 프로세스는 항상 있었고 소켓 파일을 차단하는 것처럼 보였고 새로운 mysql 프로세스는 자체적으로 만들 수 없었습니다.

그래서 이것은 도움이되었습니다.

cd /var/run
sudo cp mysqld/ mysqld.bc -rf
sudo chown mysql:mysql mysqld.bc/
sudo service mysql stop
sudo cp mysqld.bc/ mysqld -rf
sudo chown mysql:mysql mysqld -R
sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking &

이제는 다음을 사용하여 데이터베이스에 로그인 할 수 있습니다

mysql -u root

그런 다음 루트 비밀번호를 업데이트하십시오.

UPDATE user SET authentication_string=password('YOURPASSWORDHERE') WHERE user='root';
FLUSH PRIVILEGES;

추신 : 루트 passwod를 업데이트하는 데 문제가 있습니다. "auth_socket"플러그인에 문제가있는 것 같아서 전체 권한을 가진 새 사용자를 만들어야했습니다

insert into user set `Host` = "localhost", `User` = "super", `plugin` = "mysql_native_password", `authentication_string` = NULL, `password_expired` = "N", `password_lifetime` = NULL, `account_locked` = "N", `Select_priv` = "Y",
`Insert_priv` = "Y", `Update_priv` = "Y", `Delete_priv` = "Y", `Create_priv` = "Y", `Drop_priv` = "Y", `Reload_priv` = "Y", `Shutdown_priv` = "Y", `Process_priv` = "Y", `File_priv` = "Y",
`Grant_priv` = "Y",  `References_priv` = "Y", `Index_priv` = "Y", `Alter_priv` = "Y", `Show_db_priv` = "Y", `Super_priv` = "Y", `Create_tmp_table_priv` = "Y", `Lock_tables_priv` = "Y",
`Execute_priv` = "Y", `Repl_slave_priv` = "Y",  `Repl_client_priv` = "Y",  `Create_view_priv` = "Y", `Show_view_priv` = "Y", `Create_routine_priv` = "Y", `Alter_routine_priv` = "Y",
`Create_user_priv` = "Y",  `Event_priv` = "Y", `Trigger_priv` = "Y", `Create_tablespace_priv` = "Y";

비밀번호없이 "super"사용자를 생성 한 다음 mysql -u super


데비안 서버 Jessie에서 내 작업 솔루션은 단순히

service mysql restart
service mysql reload

루트 사용자로서


나는 같은 문제가 있었다. 많은 검색 후 나는 대답을 찾지 못했습니다.

마지막으로 /tmp디렉토리를 확인 했는데 권한이 755였습니다. 권한을 777로 변경했으며 mysqld가 아무런 문제없이 시작되었습니다.

참고 URL : https://stackoverflow.com/questions/11657829/error-2002-hy000-cant-connect-to-local-mysql-server-through-socket-var-run



반응형