'초기 통신 패킷을 읽을 때 MySQL 서버에 대한 연결이 끊어졌습니다. 시스템 오류: 0
에러가 발생하고 있다.
"초기 통신 패킷을 읽을 때 MySQL 서버에 대한 연결이 끊어졌습니다. 시스템 오류: 0"
db에 접속합니다.
localhost를 사용하면 모든 것이 정상적으로 작동합니다.다만, 다음과 같이 라이브 IP 주소를 사용하고 있는 경우는,
mysql_connect("202.131.xxx.106:xxxx", "xxxx", "xxxxx") or die(mysql_error());
여기 있는 누군가가 방화벽 문제일 수 있다고 제안합니다.
방금 이 문제가 발생했는데 방화벽이라는 것을 알게 되었습니다.PCTools Firewall Plus를 사용하고 있는데 MySQL에 대한 전체 액세스를 허용하지 않았습니다.일단 내가 바뀌면 괜찮았어.도움이 됐으면 좋겠다.
그럴 수 있나요?
또한 MySQL 서버가 루프백 IP(127.0.0.1 / localhost)에 바인드되어 있어 "외부"에서 접속이 효과적으로 차단되기 때문일 수도 있습니다.
이 경우 스크립트를 웹 서버(MySQL 서버도 실행 중일 수 있음)에 업로드하고 서버 호스트를 'localhost'로 유지해야 합니다.
my.cnf라는 이름의 mysql 구성 파일을 열고 "bind-address"를 찾습니다.여기서 설정(127.0.0.1 또는 localhost)을 라이브 서버 IP(mysql_connect 함수로 사용하는 IP)로 바꿉니다.
이것으로 문제가 확실히 해결될 것이다.
감사해요.
1) MySQL에 대한 원격 연결을 허용합니다.파일 편집:
>sudo nano /etc/mysql/my.cnf
주석 행:
#bind-address = 127.0.0.1
MySQL 재시작:
>sudo service mysql restart
2) 리모트 접속용 사용자를 만듭니다.
>mysql -uroot -p
CREATE USER 'developer'@'localhost' IDENTIFIED BY 'dev_password';
CREATE USER 'developer'@'%' IDENTIFIED BY 'dev_password';
GRANT ALL ON *.* TO 'developer'@'localhost';
GRANT ALL ON *.* TO 'developer'@'%';
3) Ubuntu를 사용하여 Windows에서 Virtual Box 머신에 원격으로 연결해야 합니다.iptables의 포트 3306을 허용해야 합니다.
>iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT
새로운 슬레이브 서버를 셋업할 때 이 문제가 발생.되어 있는 것을 했습니다./etc/hosts.allow
파일입니다. IP 주소를 추가해서 마스터 서버에 접속할 수 있게 되었습니다.
「 「 」를 것에 해 주세요.hosts.allow
★★★★★★★★★★★★★★★★★」hosts.deny
액세스 제어에 사용합니다.
이 문제가 발생하여 이전 시스템 관리자가 MySQL이 실행되고 있는 포트를 변경하게 되었습니다.MySQL Workbench는 기본 3306에 연결하려고 했지만 서버는 20300에서 실행되고 있었습니다.
이 오류는 서버를 찾을 것으로 예상되는 포트로부터 응답을 수신하지 않았음을 의미합니다.원인은 잘못된 머신에 접속하는 것(여러 가지 이유 중 하나)부터 서버가 예상 포트에 없는 것까지 다양합니다.
/etc/mysql/my.cnf에서 서버가 바인드되어 있는 포트를 확인합니다.그것은 당신의 connect 스테이트먼트에 기재되어 있는 내용과 일치합니까?일치하는 경우 서버 자체와 클라이언트를 실행하고 있는 머신의 명령줄에서 mysql로 접속해 보십시오.다른 장소에서 동작하지 않는 경우는, 파이어 월(fire wall)/라우터 설정에 문제가 있을 가능성이 있습니다.
한 가지 이유가 더 있는데...
Ubuntu 서버에 접속했습니다만, 모든 것이 커스터마이즈 되어 같은 에러로 접속할 수 없었습니다.
은 안쪽에 있습니다./etc/ssh/sshd_config
PermitTunnel no
로 변신한 후
PermitTunnel yes
MySQL DB에 원격으로 연결할 수 있었습니다.
내 경우 MySQL이 lo on linux에만 바인드되어 있는 것이 문제였습니다.이 문제를 해결하기 위해 my.cnf(/etc/syslog/my.cnf에 있음)를 편집하여 bind-address=syslog.0.1 행을 삭제했습니다.
이를 통해 mysql은 임의의 네트워크인터페이스에 바인드 할 수 있습니다.
방금 윈도우 박스에 mysql을 설정했어요.같은 박스에서 Navicat MySql 클라이언트에 접속하려고 했을 때 OP 오류가 발생하였습니다.호스트로서 127.0.0.1을 지정할 필요가 있었습니다.
localhost 또는 서버의 실제 IP 주소가 모두 작동하지 않았습니다.
MySQL Workbench 6.3을 사용하여 Google Cloud SQL에 연결하려고 할 때 이 오류가 발생했습니다.
약간의 조사 결과, 인터넷 프로바이더에 의해 IP 주소가 변경되어 클라우드 SQL에 들어갈 수 없는 것을 알게 되었습니다.
나는 그것을 승인하고 업무에 복귀했다.
저도 같은 문제에 직면했어요.확인하고 AllowTcpForwarding Yes를 설정하려고 했지만 sshd_config에 없어 도움말이 없습니다.sshd_config나 my.cnf는 변경하지 않았습니다.ssh 호스트 이름이 mysql 호스트 이름과 같지 않은지 확인합니다(localhost 사용).
워크벤치에서 +를 선택하여 새 연결을 추가하고 다음을 설정합니다.
- 연결 방식: 표준 TCP/IP over SSH
- SSH 호스트명: 192.168.0.50:22 (리모트 SSH 서버의 IP 및 포트 교환(옵션))
- SSH 사용자 이름: sshuser
- 프롬프트에서 비밀번호를 설정하거나 추가할 수 있습니다.
- MYSQL 호스트명: localhost 또는 127.0.0.1
- MYSQL 서버 포트: 3306
- 프롬프트에서 비밀번호를 설정하거나 추가할 수 있습니다.
접속을 테스트합니다.성공하고 OK를 누릅니다.비올라!
MySQL 워크벤치에서 접속할 때도 같은 오류가 발생하였습니다.이렇게 고쳤어요./etc/my.cnf 컨피규레이션파일에서는 bind-address 값이 서버의 IP 주소로 설정되어 있었습니다.복제를 설정하려면 이 작업을 수행해야 합니다.어쨌든, 저는 두 가지 일을 해서 해결했습니다.
- my.cnf 파일의 바인드 주소에서 접속할 수 있는 사용자를 만듭니다.
예.
CREATE USER 'username'@'bind-address' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON schemaname.* TO 'username'@'bind-address';
FLUSH PRIVILEGES;
- MySQL 워크벤치의 연결 세부 정보에서 MySQL 호스트 이름 값을 바인드 주소와 일치하도록 변경
문제는 DNS 쿼리가 서브넷 내의 FW에 의해 차단된다는 것입니다.해결책은 MySQL 내에서 DNS 조회를 비활성화하는 것이었습니다.
그 문제는 나에게 꽤 어리석었다.
AWS EC2 Ubuntu 머신(당분간 MariaDB가 로컬로 설치됨)에서도 같은 문제가 발생했기 때문에 SSH 터널링을 시도했더니 같은 문제가 발생하였습니다.그래서 ssh tunnel over terminal을 시도했습니다.
ssh -L13306:127.0.0.1:3306 root@ip.address -i my/private/key.pem
그리고 이렇게 말했어요.
사용자 "root"가 아닌 사용자 "ubuntu"로 로그인하십시오.
ssh config와 마찬가지로 ssh 사용자를 root에서 ubuntu로 변경했는데 정상적으로 연결되었습니다.
따라서 SSH 연결 사용자를 확인합니다.
제가 감독했기 때문에 30분 정도 시간이 걸리기 때문에 도움이 되었으면 합니다.
컨피규레이션파일이 발견된 것은 바인드주소를 코멘트 아웃하는 "/etc/mysql/mysql.conf.d/mysqld.cnf"였습니다.
여기서 알 수 있듯이:디폴트로는 스킵네트워킹 대신 호환성이 높고 안전성이 낮은 localhost에서만 리슨합니다.
Ubuntu 18.04에 db docker 컨테이너를 연결하려고 하는데 같은 문제가 발생하였습니다.
''를 해 주세요.nmcli dev
'''가 docker0
접속되어 있습니다.
접속되어 있지 않은 경우는, 도커 서비스를 재기동해 보겠습니다.
sudo service docker restart
는 ★★★★★★★★★★★★★★★★★★★★★를 만들어 보았다.telnet
port " " " over"3306
Host 'x.x.x.x' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'Connection closed by foreign host.
~로root
서버 " "mysqladmin flush-hosts
전혀 효과가 없었다!
가 사용했을 도 같은 가 있었습니다.localhost
MySQL 서비스를 다시 시작했는데 정상적으로 동작했습니다.
저 같은 경우에는 ALL: ALL in hosts.deny가 있었어요.모두로 변경: SSH를 통해 연결하면 PANITIAL이 문제를 해결했습니다.
같은 문제로 Bind Address가 앞뒤로 작동하지 않는다.내 해결책은 특권을 없애는 것이었다.
mysql> FLUSH PRIVILEGES;
Firewalld
에 액세스 , 커맨드를 합니다.따라서 접근을 허용하려면 다음 명령을 사용합니다.
firewall-module --permanent --zone=module --add-syslogYOUR_IP/32
firewall-parent --permanent --zone=syslog --add-port=3306/syslog
firewall-module --interfirewall-module
는 내설을 설정한다.bind-address = 0.0.0.0
mysql/my.cnf
으로는 모든의 포트.그러면 기본적으로 모든 주소(단, 1개의 포트)를 리슨합니다.
서버 재시작도 잊지 마십시오.systemctl restart mysql
저도 같은 문제가 있었는데저 같은 경우는
서비스 mysqld 시작
저 같은 경우에는 대학교 와이파이 차단 포트 3306 이었어요.모바일 핫스팟을 사용하여 연결할 수 있었습니다.
모바일 핫스팟 또는 다른 네트워크로 변경하여 해당 핫스팟에서 작동하면 원래 네트워크가 포트 3306을 차단하고 있음을 알 수 있습니다.복수의 네트워크상에서 같은 에러가 발생했을 경우는, 사용의 머신에 고유의 에러가 발생하고 있는 것을 알 수 있습니다.
도커 컨테이너에는 포트 3306이 있었지만 도커 파일에는 포트 33060이었습니다.도커 컨테이너의 포트를 33060으로 편집했습니다.
도커 파일에 추가되어야 합니다.
ENV MYSQL_ROOT_HOST 172.17.0.1
나는 나를 위해 일하면서 아래 3단계를 했다.
bind-address = "YOUR MACHINE IP"
에my.cnf
/etc/my.cnf 파일다음 명령으로 서비스를 재시작합니다.
service mysql restart
GRANT ALL PRIVILEGES ON yourDB.* TO 'username'@'YOUR_APPLICATION_IP' IDENTIFIED BY 'YOUR_PASSWORD' WITH GRANT OPTION;
MySQL 도커 이미지를 설치할 때와 WSL2 MySQL 클라이언트에서 연결을 시도했을 때 같은 문제가 발생했습니다.
접수된 답변에 방화벽 문제일 것으로 기재되어 있기 때문에, 이 에러는 Windows용 도커가 프라이빗 네트워크에 통신할 수 없기 때문에 발생한 것입니다.
「방화벽과 네트워크 보호」, 「애플리케이션의 방화벽 통과 허가」, 「설정 변경」(관리자 권한 필요)의 설정을 변경해, 「도커 데스크탑 백엔드」의 프라이빗 네트워크 접속을 허가했습니다.
Mac에서 로컬 MySQL을 설치한 경우에도 동일한 오류가 발생했습니다.문제는 MySQL이 열고 있는 파일 수가 MacOS에 비해 너무 많다는 것입니다.
동일한 문제가 있는지 확인하려면 이 명령을 실행하여 다음 명령을 찾을 수 있습니다.File Descriptor
에러:
tail -200 /usr/local/var/mysql/$(whoami).err | grep "Warning"
다음 행을 my.cnf 파일에 추가했더니 문제가 해결되었습니다.
table_open_cache = 200
같은 문제가 있었는데, 제게 효과가 있었던 건
- 애플리케이션을 허용하는 Windows 방화벽으로 이동합니다.
- mysql은 목록에 없을 수 있으므로 추가해야 합니다.경로는 보통 C:/Program Files(x86)/MySQL/bin/mysql입니다.
- 프라이빗 네트워크와 퍼블릭네트워크를 모두 마크하여 적용합니다.
원격으로 Mysql에 접속할 때 오류가 발생하였습니다.이 경고문구를 넣었어요/var/log/mysqld.log
:
[Warning] IP address 'X.X.X.X' could not be resolved: Temporary failure in name resolution
방금 이 행을 추가했습니다./etc/hosts
파일:
X.X.X.X some_name
문제 해결!미사용skip-name-resolve
MySQL에 연결할 때 로컬 앱에서 오류가 발생했습니다.
언급URL : https://stackoverflow.com/questions/5755819/lost-connection-to-mysql-server-at-reading-initial-communication-packet-syste
'programing' 카테고리의 다른 글
MySQL 검색 및 필드의 일부 텍스트 바꾸기 (0) | 2022.12.07 |
---|---|
REGEXP_REPLACE 가이드라인 (0) | 2022.12.07 |
MySQL을 다시 시작하지 않고 MySQL의 느린 쿼리 로그를 활성화하려면 어떻게 해야 합니까? (0) | 2022.12.07 |
PIP 및 설정이 포함된 Python Cryptography 패키지를 설치하지 못했습니다.화이 (0) | 2022.12.07 |
어레이가 비어 있는 경우 Forech를 건너뛸 수 있는 가장 깨끗한 방법 (0) | 2022.12.07 |