소켓 '/var/lib/mysql/mysql.sock'을 통해 로컬 MySQL 서버에 연결할 수 없습니다 (2).
mysql에 연결하려고 할 때 다음 오류가 발생합니다.
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
이 오류에 대한 해결책이 있습니까? 그 이유는 무엇입니까?
"localhost"또는 "127.0.0.1"에 연결하고 있습니까? "localhost"에 연결하면 소켓 커넥터가 사용되지만 "127.0.0.1"에 연결하면 TCP / IP 커넥터가 사용됩니다. 소켓 커넥터가 활성화 / 작동되지 않으면 "127.0.0.1"을 사용해보십시오.
mysql 서비스가 실행 중인지 확인하십시오
service mysqld start
그런 다음 다음 중 하나를 시도하십시오.
(mysql에 비밀번호를 설정하지 않은 경우)
mysql -u root
이미 비밀번호를 설정 한 경우
mysql -u root -p
my.cnf 파일 (일반적으로 etc 폴더에 있음)이 올바르게 구성되어있는 경우
socket=/var/lib/mysql/mysql.sock
다음 명령으로 mysql이 실행 중인지 확인할 수 있습니다.
mysqladmin -u root -p status
mysql 폴더로 권한을 변경하십시오. 로컬에서 작업하는 경우 다음을 시도해보십시오
sudo chmod -R 777 /var/lib/mysql/
나를 위해 그것을 해결
MySQL 서버가 실행 중이 아니거나 소켓 파일의 위치가 아닙니다 (my.cnf 확인).
에 mysql.sock
존재하지 않을 가능성 이 높습니다 /var/lib/mysql/
.
다른 위치에서 동일한 파일을 찾으면 심볼릭 링크하십시오.
예를 들어 : 나는 그것을 가지고 /data/mysql_datadir/mysql.sock
사용자를 mysql로 전환하고 다음과 같이 실행하십시오.
su mysql
ln -s /data/mysql_datadir/mysql.sock /var/lib/mysql/mysql.sock
그게 내 문제를 해결했다
최신 RHEL을 사용하는 경우 mysql db 대신 mariadb (오픈 소스 mysql db)를 시작해야 할 수 있습니다.
yum remove mysql
yum -y install mariadb-server mariadb
service mariadb start
그런 다음 일반적인 방식으로 mysql에 액세스 할 수 있어야합니다.
mysql -u root -p
내 경우에는 내가 다른 위치의 내부에 소켓 파일을 이동 한 /etc/my.cnf
에서 /var/lib/mysql/mysql.sock
에/tmp/mysql.sock
mysqld 서비스를 다시 시작한 후에도 연결하려고 할 때 여전히 오류 메시지가 표시됩니다. ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
문제는 클라이언트가 구성되는 방식에 있습니다. 진단을 실행하면 실제로 올바른 소켓 경로가 표시됩니다. 예 :ps aux | grep mysqld
공장:
mysql -uroot -p -h127.0.0.1
mysql -uroot -p --socket=/tmp/mysql.sock
작동하지 않습니다 :
mysql -uroot -p
mysql -uroot -p -hlocalhost
mysql 설정의 섹션 아래에 동일한 소켓 라인 을 추가 하여이 문제를 해결할 수 있습니다 .[client]
편집 /etc/my.cnf
다음 줄 추가my.cnf
[mysqld]
socket=/var/lib/mysql/mysql.sock
[client]
socket=/var/lib/mysql/mysql.sock
mysql을 재시작하고 다시 연결하십시오
mysql -u 사용자 -p 비밀번호 데이터베이스 -h 호스트;
mysqld 서비스가 실행 중인지 확인하고, 실행되지 않으면 서비스를 시작하십시오.
문제가 해결되지 않으면 /etc/my.cnf
로 시작하는 줄이 표시되는 다음과 같이 찾아 수정하십시오 socket
. 이 업데이트를 수행하기 전에 해당 파일을 백업하십시오.
socket=/var/lib/mysql/mysql.sock
로 변경
socket=/opt/lampp/var/mysql/mysql.sock -u root
에 충분한 공간이 남아 있는지 확인하십시오 /var
. MySQL 데몬이 드라이브에 추가 정보를 쓸 수 없으면 MySQL 서버가 시작되지 않고 오류가 발생합니다Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
사용을 고려하십시오
expire_logs_days = 10
max_binlog_size = 100M
디스크 사용량을 줄이는 데 도움이됩니다.
커뮤니티 개발 MySQL 포크 인 MariaDB는 많은 배포에서 MySQL의 기본 구현이되었습니다.
먼저 시작해야합니다
$ sudo systemctl start mariadb
이것이 실패하면 시도해보십시오.
$ sudo systemctl start mysqld
그런 다음 mysql을 시작하려면
$ mysql -u root -p
현재 Fedora에서 패키지 이름 mariadb
은 Ubuntu에서이라고 mariadb-server
합니다.
따라서 시스템에 설치되어 있지 않은 경우 설치해야 할 수도 있습니다.
나를 위해 일한 것은 다음과 같습니다.
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
service mysqld restart
다른 mysql 서비스가 실행 중인지 확인하십시오.
서버를 시작했는지 확인하십시오.
mysql.server start
그런 다음 루트 사용자와 연결하십시오.
mysql -uroot
시험
echo 0 > /selinux/enforce
/ var / lib / mysql [파일 복사 또는 바꾸기]에서 파일을 변경하는 경우, 파일 소유자를 mysql로 설정해야합니다. mariadb.service restart가 실패한 경우 매우 중요합니다
chown -R mysql : mysql / var / lib / mysql / *
chmod -R 700 / var / lib / mysql / *
mysql이 이전에 작동하고 갑자기 중지 된 경우 서버를 "다시 부팅"하면됩니다.
CentOS VPS에서이 문제에 직면했습니다 .->
끊임없이 받고 있었다
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'(2)
모든 기술을 시도하고 마침내 서버를 다시 시작하면 문제가 해결되었습니다.
shutdown -r now
도움이 되었기를 바랍니다 !!
먼저 "service mysqld start"를 입력하고 로그인하십시오
MySQL 서버를 올바르게 설치했는지 확인하십시오.이 오류가 여러 번 발생했으며 소켓에서 디버깅하는 것이 복잡하다고 생각합니다. 재설치가 더 쉬울 수 있습니다.
CentOS 7을 사용하는 경우 올바른 설치 방법은 다음과 같습니다.
우선, mysql 커뮤니티 소스를 추가하십시오
yum install http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
그런 다음에 의해 설치할 수 있습니다 yum install mysql-community-server
systemctl로 시작하십시오. systemctl start mysqld
내 문제는 mysql을 성공적으로 설치하고 정상적으로 작동한다는 것입니다.
그러나 어느 날 같은 오류가 발생했습니다.
소켓 '/var/lib/mysql/mysql.sock'을 통해 로컬 MySQL 서버에 연결할 수 없습니다 (2).
그리고 mysql.sock 파일이 존재하지 않습니다.
이 솔루션은 내 문제를 해결했으며 mysql이 다시 실행되었습니다.
루트로 로그인하십시오 :
sudo su -
운영:
systemctl stop mysqld.service
systemctl start mysqld.service
systemctl enable mysqld.service
루트로 테스트하십시오.
mysql -u root -p
이제 mysql이 실행 중이어야합니다.
이것이 다른 사람에게도 도움이되기를 바랍니다.
mysql이 my.cnf 파일에서 소켓 파일의 위치 정보를 읽는 동안 mysql_secure_installation 프로그램이 때때로 올바르게 수행하지 않는 것 같습니다.
따라서 당신이 나와 비슷하고 설치시 주변을 뒤섞 으면 mysql로 데이터베이스에 연결할 수는 있지만 상황을 해결할 수는 없습니다 (어쨌든 해당 스크립트를 사용하지 않음).
이 문제를 해결하려면 sreddy의 제안이 잘 작동합니다. 스크립트가 소켓을 기대하는 위치에서 실제 위치로 소프트 링크를 만듭니다. 예:
ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock
(소켓의 기본 위치로 / tmp /를 사용합니다)
그것은 다음과 같은 변화로 나를 위해 일했습니다.
소켓의 경로는 [mysqld]에 언급되어 있고 my.cnf의 [client]에 동일하며 mysql을 다시 시작하십시오.
[mysqld] socket = / var / lib / mysql / mysql.sock
[클라이언트] socket = / var / lib / mysql / mysql.sock
이 오류를 재현하는 한 가지 방법 : 외부 서버에 연결하려고하지만 존재하지 않는 로컬 서버에 연결하려는 경우 :
eric@dev ~ $ mysql -u dev -p
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through
socket '/var/lib/mysql/mysql.sock' (2)
eric@dev ~ $
따라서 다음과 같이 호스트를 지정해야합니다.
eric@dev ~ $ mysql --host=yourdb.yourserver.com -u dev -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 235
Server version: 5.6.19 MySQL Community Server (GPL)
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases;
+-------------------------+
| Database |
+-------------------------+
| information_schema |
| mysql |
| performance_schema |
+-------------------------+
3 rows in set (0.00 sec)
mysql> exit
Bye
eric@dev ~ $
이것은 어리석은 제안 일 수도 있지만 DB가 여전히 localhost에서 호스팅되는지 100 % 확인하십시오. 예를 들어, 네트워크 관리자가 Amazon DB 호스팅을 선택했거나 변경 한 경우 해당 호스트 이름이 대신 필요합니다!
필자의 경우 새 데이터베이스를 가져오고 있었고 그 후에 다시 연결할 수 없었습니다. 마침내 나는 그것이 공간 문제라는 것을 깨달았습니다.
따라서 마지막 데이터베이스를 삭제하고 하드 드라이브 또는 내가 한 일을 확장하여 가상 머신의 스냅 샷을 복원 할 수 있습니다.
누군가가 유용하다고 생각하는 경우를 대비하여
SSH 클라이언트에서 mysql을 연결하는 동안이 문제가 발생하여 소켓 사이를 전환 할 때 도움이되는 명령에 소켓 경로를 추가하는 것이 발견되었습니다.
> mysql -u user -p --socket=/path/to/mysql5143.sock
디스크 공간이 부족한 경우 문제가됩니다. 해결책은 HDD에서 약간의 공간을 확보하는 것입니다.
설명을 더 읽으려면 다음을 읽으십시오.
LINUX에서 MySQL을 실행하는 경우 disk free 명령으로 HDD의 여유 공간을 확인하십시오.
df
당신이 그런 것을 얻는다면 :
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 5162828 4902260 0 100% /
udev 156676 84 156592 1% /dev
/dev/sda3 3107124 70844 2878444 3% /home
그런 다음 이것이 문제이며 이제 해결책이 있습니다!
mysql.sock은 거의 항상 루트 폴더 아래에있는 mysql 폴더에 작성되기를 원하므로 공간 부족으로 인해 달성 할 수 없습니다.
주기적으로 mysql 디렉토리 아래에 ls 명령을 지정하면 (openSUSE 11.1은 / var / lib / mysql에 있음) 다음과 같은 결과가 나타납니다.
hostname:/var/lib/mysql #
.protected IT files ibdata1 mysqld.log systemtemp
.tmp NEWS greekDB mysql mysqld.pid test
ARXEIO TEMP1 ib_logfile0 mysql.sock polis
DATING deisi ib_logfile1 mysql_upgrade_info restore
mysql.sock 파일이 자주 나타나고 사라집니다 (폴더에 mysql.sock 파일이있는 인스턴스를 히트하려면 ls로 할당을 시도해야 함).
디스크 공간이 부족하여 발생합니다.
나는 어떤 사람들을 도울 수 있기를 바랍니다 !!!! 감사!
explicit_defaults_for_timestamp
my.cnf 에서 비활성화해야했습니다 .
먼저 2, 3 솔루션을 시도하십시오. 오류는 여전히 팝업이며 찾을 수없는 경우/var/lib/mysql/mysql.sock
find /var/ -name mysql.sock
/ var /에서 사용 가능한 공간을 확인하십시오.
df
디렉토리가 가득 찬 경우 사용하지 않는 일부 파일 / 디렉토리를 제거하십시오.
rm /var/cache/*
아마 당신의 문제는 지금 분류 될 것입니다.
mysql --host=mysql-{LETTER} --user={LETTER}{GROUP ID}admin -p
프로젝트 관리자 프로파일의 MySQL 데이터베이스에 표시된대로 {LETTER} 및 {GROUP ID}를 변경하십시오.
'IT story' 카테고리의 다른 글
psql-명령 결과를 파일로 저장 (0) | 2020.04.09 |
---|---|
Oracle에서 다중 행 삽입을 수행하는 가장 좋은 방법은 무엇입니까? (0) | 2020.04.09 |
코드에서 안드로이드 세트 스타일 (0) | 2020.04.09 |
다중 GitHub 계정 및 SSH 구성 (0) | 2020.04.09 |
스택 오버플로는 SEO 친화적 인 URL을 어떻게 생성합니까? (0) | 2020.04.08 |