소켓 '/var/mysql/mysql'을 통해 로컬 MySQL 서버에 연결할 수 없습니다.양말'(38)
mysql 접속에 큰 문제가 있습니다.실행 시:
/usr/local/mysql/bin/mysql start
다음 오류가 발생하였습니다.
Can't connect to local MySQL server through socket '/var/mysql/mysql.sock' (38)
있다mysql.sock
/var/mysql
디렉토리로 이동합니다.
- 아, 아, 아! - 아, 아, 아!/etc/my.cnf
하다
[client]
port=3306
socket=/var/mysql/mysql.sock
[mysqld]
port=3306
socket=/var/mysql/mysql.sock
key_buffer_size=16M
max_allowed_packet=8M
및에/etc/php.ini
가 가지고 있는 것은 있다
; Default socket name for local MySQL connects. If empty, uses the built-in
; MySQL defaults.
mysql.default_socket = /var/mysql/mysql.sock
했습니다.sudo /opt/local/apache2/bin/apachectl restart
하지만 난 아직 오류를 가지고 있어.
않으면, 내가 을 했을 때, 나는 그것을 할 때, 나는 그것을 할 수 있다.mysql_config --sockets
--socket [/tmp/mysql.sock]
my.cnf 파일(통상은 /etc/mysql/폴더)이 올바르게 설정되어 있는 경우:
socket=/var/lib/mysql/mysql.sock
다음 명령을 사용하여 mysql이 실행 중인지 여부를 확인할 수 있습니다.
mysqladmin -u root -p status
권한을 mysql 폴더로 변경해 보십시오.로컬에서 작업하는 경우 다음을 시도할 수 있습니다.
sudo chmod -R 755 /var/lib/mysql/
그걸로 해결됐어요.
MySQL 서버뿐만 아니라 MySQL 서버도 설치하시겠습니까?
예를 들어 MySQL 서버를 설치하려면 yum을 사용하거나 MySQL 명령줄 도구와 서버를 모두 설치합니다.
yum -y install mysql mysql-server (or apt-get install mysql mysql-server)
MySQL 서비스를 활성화합니다.
/sbin/chkconfig mysqld on
MySQL 서버를 시작합니다.
/sbin/service mysqld start
그런 다음 MySQL 루트 비밀번호를 설정합니다.
mysqladmin -u root password 'new-password' (with the quotes)
간단한 회피책입니다.mysql_connect()의 localhost 대신 로컬 IP 주소(127.0.0.1)를 사용해 보겠습니다.이것에 의해, unix 소켓 대신에 TCP/IP 를 개입시켜 php 가 접속하도록 「강제」됩니다.
다음 오류가 발생하였습니다.
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111)
몇 가지 방법을 시도하여 다음 방법으로 해결:
sudo gksu gedit /etc/mysql/my.cnf
수정 완료:
#bind-address = 127.0.0.1
대상:
bind-address = localhost
를 재기동했습니다.
sudo /etc/init.d/mysql restart
됐다.
: mysqld 를 실행하고 합니다./etc/init.d/mysql start
파일에 대해 cron 작업을 설정할 때 이 오류가 발생했습니다.파일 권한을 777로 변경했는데 여전히 작동하지 않습니다.드디어 해결책을 찾았어요.다른 사람들에게 도움이 될 수도 있어요.
다음 명령을 사용하여 시도합니다.
mysql -h 127.0.0.1 -P 3306 -u 루트 -p
-h는 호스트, -P는 포트, -p는 패스워드를 의미합니다.
문제가 발생하지 않도록 하려면 서버의 전원을 끄지 않고 명령줄에서 서버를 정상적으로 셧다운해야 합니다.
shutdown -h now
그러면 시스템의 전원을 끄기 전에 실행 중인 서비스가 중지됩니다.
Centos를 기반으로 이 문제가 발생했을 때 다시 백업하기 위한 추가 방법은 mysql.sock을 이동하는 것입니다.
mv /var/lib/mysql/mysql.sock /var/lib/mysql/mysql.sock.bak
service mysqld start
서비스를 재시작하면 mqsql.sock이라는 새 항목이 생성됩니다.
많은 답변에서 알 수 있듯이 MySQL 서비스를 시작할 때 이 오류 메시지가 나타날 수 있는 많은 문제가 있습니다.문제는 MySQL은 일반적으로 적절한 로그 파일만 보면 정확히 무엇이 문제인지 알려준다는 것입니다.
를 들어에서는 '우분투하다', '우분투하다', '우분투하다'를 체크해야 합니다/var/log/syslog
많은 될 수 있기 에, 이 파일을 사용하는 입니다.grep
메시지 mysql 메시지 tail
이데올로기 때문에모두 합치면 다음과 같이 보일 수 있습니다.
grep mysql /var/log/syslog | tail -50
다른 사람이 '이것이 내 시스템에 효과가 있었다'고 말했기 때문에 무작정 구성을 변경하지 마십시오.실제로 시스템에 어떤 문제가 있는지 파악하면 더 빨리 더 나은 결과를 얻을 수 있습니다.
다른 회피책은 /etc/my.cnf를 편집하여 [client]섹션에 호스트를 포함하는 것입니다.
[client]
#password = your_password
host = 127.0.0.1
port = 3306
socket = /var/run/mysql/mysql.sock
다음으로 mysql 서비스를 재시작합니다.
이 회피책은 서버 버전 5.5.25a-log 소스 배포에서 테스트되었습니다.
저도 같은 문제가 발생했는데 mysql 서버 실행 중 mysql 드라이버 업데이트로 인해 발생하였습니다.mysql과 apache2를 모두 재부팅하여 수정했습니다.
sudo service mysql stop
sudo service mysql start
sudo 서비스 apache2 중지
sudo 서비스 apache2 시작
-h(호스트) 및 -P(포트)로 시도:
mysql -h 127.0.0.1 -P 3306 -u root -p
제 경우 센토스 5.5를 사용하고 있었습니다.mysql 서비스가 어떤 이유로 정지된 것이 문제임을 알게 되었습니다.그래서 다음 명령어로 mysql 서비스를 시작했습니다.
/etc/init.d/mysqld start
그래서.. 바보같은 실수였어
모든 것이 정상적으로 동작해, 이 에러가 표시되기 시작했을 경우는, 다른 작업을 실시하기 전에, 디스크 용량이 부족하지 않은 것을 확인해 주세요.
df -h
mysql.sock이 생성되는 볼륨이 100% 사용 중인 경우 MySql은 볼륨을 생성할 수 없으며 이것이 이 오류의 원인이 됩니다.오래된 로그 파일 등 불필요한 파일을 삭제하기만 하면 됩니다.
sudo service mysql start
이거면 충분히 도움이 될 거야.mysql 설정에 영향을 주는 명령어가 변경되었을 가능성이 있습니다.
이 문제에 대한 해결 방법은 여러 가지가 있지만, 제 상황으로서는 기계/서버(Ubuntu 16.04 Server)의 DATE를 수정하기만 하면 됩니다.
i) 서버의 날짜를 확인하고 수정합니다.
ii) ★sudo /etc/init.d/mysql restart
그럼 시작할 수 있을 거야
MAMP를 실행하고 있었는데 .sock 파일이 다른 위치에 있었기 때문에 오류가 발생했습니다.앱이 실제 위치를 가리켜야 한다고 생각하는 심볼릭 링크를 추가했을 뿐인데, 그것은 마법처럼 작동했습니다.
AWS(Amazon Web Services) Micro 버전을 사용하는 경우 메모리 문제입니다.내가 뛰었을 때
mysql
터미널에서 보면
ERROR 2002 (HY000): Can't connect to local MySQL server through socket /var/run/mysqld/mysqld.sock' (111)
그래서 저는 다음을 시도했지만 실패했어요.
service mysqld restart
많은 검색 결과 MySQL용 스왑 파일을 만들어야 메모리가 충분하다는 것을 알게 되었습니다.순서는, http://www.prowebdev.us/2012/05/amazon-ec2-linux-micro-swap-space.html 에 기재되어 있습니다.
그리고 mysqld를 재기동할 수 있었습니다.
또, 이것이 권한의 문제인 것을 알았습니다.을 ( 6하고, 변경(Debian 6 squeeze 상에서의)을가 있었습니다.mydatabase
는 보유하고 있는 임의의 데이터베이스입니다.
★★★mysql:mysql
:
chown mysql:mysql /var/lib/mysql
chown mysql:mysql /var/lib/mysql/ib*
chown mysql:mysql /var/lib/mysql/mydatabase
chown mysql:mysql /var/lib/mysql/mydatabase/*
chown mysql:mysql /var/lib/mysql/mysql/*
★★★mysql:root
:
chown mysql:root /var/lib/mysql/mysql
chown mysql:root /var/run/mysqld
★★★mysql:adm
:
chown mysql:adm /var/log/mysql
chown mysql:adm /var/log/mysql.err
chown mysql:adm /var/log/mysql.log*
제 경우 - MySQL을 로드하는 데 시간이 오래 걸리는 경우입니다.데이터베이스 중 하나에 100,000개 이상의 테이블이 있으며, 최종적으로 시작되었지만 이 경우 시간이 오래 걸립니다.
꽉 도 모릅니다.df
콘솔)이 원인이 되어 이 에러가 발생하게 되었습니다.
mysql.disc 파일 할 수 .--socket
(예: 션같같같)
mysql --socket=/var/mysql/mysql.sock
my.cnf 파일의 다른 위치에 소켓파일의 위치가 지정되어 있는 경우에도 동작합니다.
어떤 솔루션도 작동하지 않는 경우 다음을 시도해 보십시오.
cd /etc/mysql
my.cnf가 있는지 확인합니다.
nano my.cnf
다음과 같이 바인드주소가1개밖에 없는 것을 확인합니다.
bind-address = 127.0.0.1
그렇지 않은 경우에는 nano를 종료하고 파일을 저장합니다.
★★★★★★★★★★★★★★★★★」service mysql start
텍스트 경우 nano( 에디터)를 .apt-get install nano
Ctrl+X를 누르다같은 파일을 저장하고 사용하려면 Y라고 말하는 것을 잊지 마십시오.)
sudo service mysqld start
난 센토스를 쓰고 있어
서버를 기동하려고 할 때도 이 문제가 있었습니다만, 서버의 기동이라고 하는 회답의 대부분이 기능하지 않았습니다.먼저 다음 작업을 수행하여 설정 오류가 없는지 확인합니다.
/usr/sbin/mysqld --verbose --help 1>/dev/null
1개의 에러가 표시되었습니다.
160816 19:24:33 [Note] /usr/sbin/mysqld (mysqld 5.5.50-0ubuntu0.14.04.1-log) starting as process 9461 ...
160816 19:24:33 [Warning] Using unique option prefix myisam-recover instead of myisam-recover-options is deprecated and will be removed in a future release. Please use the full name instead.
160816 19:24:33 [Note] Plugin 'FEDERATED' is disabled.
160816 19:24:33 [ERROR] /usr/sbin/mysqld: unknown variable 'innodb-online-alter-log-max-size=4294967296'
160816 19:24:33 [ERROR] Aborting
한 a a.grep -HR "innodb-online-alter-log-max-size" /etc/mysql/
어떤 파일에 문제가 되는 행이 들어있는지 보여줘서 파일에서 그 행을 삭제했어요
나의 럼럼 my my my를 한다./var/log/mysql/error.log
다음 중 하나:
InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes
InnoDB: than specified in the .cnf file 0 671088640 bytes!
160816 22:46:46 [ERROR] Plugin 'InnoDB' init function returned error.
160816 22:46:46 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
160816 22:46:46 [ERROR] Unknown/unsupported storage engine: InnoDB
160816 22:46:46 [ERROR] Aborting
이 질문에 따라 서버를 시작할 수도 없었기 때문에 받아들여진 솔루션이 작동하지 않을 것입니다.그래서 저는 몇 가지 코멘트를 듣고 제 코멘트를 삭제했습니다./var/lib/mysql/ib_logfile0
그리고./var/lib/mysql/ib_logfile1
파일을 표시합니다.
이를 통해 서버를 시작할 수 있었고 쿼리를 연결 및 실행할 수 있었습니다. 그러나 오류 로그 파일을 확인해보니 다음과 같은 수만 개의 행이 빠르게 채워졌습니다.
160816 22:52:15 InnoDB: Error: page 1415 log sequence number 82039318708
InnoDB: is in the future! Current system log sequence number 81640793100.
InnoDB: Your database may be corrupt or you may have copied the InnoDB
InnoDB: tablespace but not the InnoDB log files. See
InnoDB: http://dev.mysql.com/doc/refman/5.5/en/forcing-innodb-recovery.html
InnoDB: for more information.
이 문제를 수정하기 위해 mysqldump를 실행하여 모든 데이터베이스를 복원했습니다(다른 솔루션에 대해서는 링크를 참조하십시오).
$ mysqldump -u root -p --allow-keywords --add-drop-database --comments --hex-blob --opt --quote-names --databases db_1 db_2 db_3 db_etc > backup-all-databases.sql
$ mysql -u root -p < backup-all-databases.sql
이제 모든 것이 예상대로 작동하고 있는 것 같습니다.
사용할 때localhost
MySQL에 연결하기 위해 운영체제는 소켓 커넥터를 사용합니다.단,127.0.0.1
IP 주소. 운영체제는 TCP/IP 커넥터를 사용합니다.따라서 소켓 커넥터에 문제가 있을 때 생각할 수 있는 해결책은 TCP/IP를 사용하여 접속을 확립하는 것입니다.127.0.0.1
대신 IP 주소localhost
.
추가 중
--protocol=tcp
나한테 효과가 있었던 것 같아요
이 정도면 충분했다
sudo /etc/init.d/mysql restart
나는 오늘 이 문제에 부딪쳤다.이 답변들 중 어느 것도 수정을 제공하지 않았다.mysql 서비스를 시작하려면 다음 명령을 수행해야 합니다(https://stackoverflow.com/a/20141146/633107) 참조).
sudo /etc/init.d/mysql stop
cd /var/lib/mysql/
ls ib_logfile*
mv ib_logfile0 ib_logfile0.bak
mv ib_logfile1 ib_logfile1.bak
... etc ...
/etc/init.d/mysql restart
이는 /var/log/mysql/error.log의 다음 오류로 인해 일부 나타납니다.
140319 11:58:21 InnoDB: Completed initialization of buffer pool
InnoDB: Error: log file ./ib_logfile0 is of different size 0 50331648 bytes
InnoDB: than specified in the .cnf file 0 5242880 bytes!
140319 11:58:21 [ERROR] Plugin 'InnoDB' init function returned error.
140319 11:58:21 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
140319 11:58:21 [ERROR] Unknown/unsupported storage engine: InnoDB
140319 11:58:21 [ERROR] Aborting
디스크 풀 에러도 표시되지만, sudo를 사용하지 않고 명령어를 실행하는 경우에만 표시됩니다.사용 권한 검사가 실패하면 Disk가 가득 찼다고 보고합니다(파티션이 가득 차지도 않은 경우에도).
CentOS 7, 64비트신규 설치
내 경우 MySQL 서버와 MySQL 클라이언트가 제대로 설치되지 않았기 때문에 오류가 발생했습니다.
사용.yum
, 삭제했습니다.mariadb
및 mysql-module 에디션.MySQL 공식 웹사이트에서 클라이언트 및 서버용 rpm을 다운로드하여 서버와 클라이언트를 설치하였습니다.
시 되어 있다는 되었습니다.이 파일은 MySQL 루트 패스워드로 할 수 .sudo cat /root/.mysql_secret
한 후 한 것 같습니다)를로 확인했습니다.sudo service mysql status
결과를 얻었습니다.
MySQL 실행 중 (2601) [OK]
파일mysql_secret의 했습니다.
mysql -uroot -pdxM01Xfg3DXEPabpf
해 주세요.dxM01Xfg3DXEPabpf
.cret_secret 파파 secrettimeout timeouttimeout timeouttimeout timeouttimeout 。
mysql 프롬프트에서 다음 명령을 입력하여 root 비밀번호를 변경합니다.
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('somePassword');
그때부터 모든 것이 잘 되었다.
이것은 당신의 질문에 직접 답하는 것이 아니라 그 일부, 즉 PythonAnywhere를 사용하는 것입니다.저는 해결책을 찾을 때 이 질문을 계속 떠올렸기 때문에 제 처지에 있는 다른 사람들에게 도움이 되기를 바라며 여기에 덧붙입니다.
PythonAnywhere는 다음과 같이 효율성과 신뢰성을 개선하기 위해 데이터베이스 연결 호스트 이름을 변경하기로 결정했습니다.
계정의 MySQL 데이터베이스 인스턴스 연결에 사용할 공식 호스트 이름이 mysql.server에서 yourusername.mysql로 변경되었습니다.pythonanywhere-services.com 를 참조해 주세요.이는 최근 몇 주 동안 문제가 발생하기 시작한 인프라스트럭처의 일부를 우회하는 것으로, 기존 방식보다 훨씬 효율적이고 신뢰할 수 있는 방법이 될 것입니다.
따라서 호스트 이름을 위에서 강조 표시된 값으로 업데이트해야 합니다.
언급URL : https://stackoverflow.com/questions/5376427/cant-connect-to-local-mysql-server-through-socket-var-mysql-mysql-sock-38
'programing' 카테고리의 다른 글
Java에서 날짜 범위를 반복하는 방법 (0) | 2022.11.01 |
---|---|
Python에서 16진수 문자열을 정수로 변환 (0) | 2022.11.01 |
JavaScript에서 달러 기호의 목적은 무엇입니까? (0) | 2022.11.01 |
숫자의 나눗셈 나머지를 찾습니다. (0) | 2022.11.01 |
PHP에서 문자열을 올바르게 인코딩하려면 어떻게 해야 합니까? (0) | 2022.11.01 |