'초기 통신 패킷을 읽는 중'에서 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 / 로컬 호스트)에 결합되어 있기 때문에 시사한다.
이 경우 펼쳐지는 웹 서버 (아마도 MySQL 서버를 실행 중일 수도 있음)에 업로드하고 서버 호스트를 'localhost'로 유지해야합니다.
my.cnf라는 mysql 구성 파일을 "bind-address"를 찾으십시오. 여기에서 설정 (127.0.0.1 OR 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) 내 경우에는 우분투를 사용하여 Windows에서 VirtualBox 시스템으로 원격으로 연결해야합니다. 따라서 iptables에서 포트 3306을 허용해야합니다.
>iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT
새 슬레이브 서버를 접근 할 때이 문제가 발생했습니다. 마스터 서버 /etc/hosts.allow
파일 에서 슬레이브 서버 IP 주소가 누락 발견되었습니다 . IP 주소를 추가하면 마스터 서버에 있습니다.
액세스 권한을 사용 hosts.allow
하고 hosts.deny
제어합니다.
나는이 문제가 있지만 이전의 sys 관리자가 MySQL이 실행중인 포트를 변경했습니다. MySQL Workbench가 기본 3306에 연결하려고 시도했지만 서버가 20300에서 실행 시도 중입니다.
내 경우의 문제는 MySQL이 Linux의 lo에만 바인딩되는 것이 었습니다. 문제를 해결하기 위해 줄 bind-address = 127.0.0.1을 제거하여 my.cnf (/etc/mysql/my.cnf에 있음)를 편집했습니다.
이것은 mysql이 모든 네트워크 인터페이스에 바인딩 할 수 있습니다.
이 오류는 MySQL Workbench 6.3을 사용하여 Google Cloud SQL에 연결하려고 할 때 발생했습니다.
약간의 연구 끝에 인터넷 공급자가 내 IP 주소를 변경했습니다. Cloud SQL에서 허용되지 않는 것을 발견했습니다.
나는 그것을 승인하고 다시 일하러 갔다.
나에게 문제는 DNS 쿼리가 서브넷 내의 FW에 의해 차단 예시는 것입니다. 해결책은 MySQL 내에서 DNS 조회를 임시하는 것입니다.
방금 Windows 상자에 mysql을 설정했습니다. 같은 상자에서 Navicat MySql 클라이언트와 연결하려고 할 때 OP의 오류가 발생했습니다. 127.0.0.1을 호스트로 지정해야합니다.
localhost 또는 서버 실제 IP 주소가 모두 작동하지 않습니다.
이 오류는 서버를 설치하고 수신되는 포트에서 응답을 수신합니다. 원인은 잘못된 시스템에 접속하는 것 (시스템 가지 이유 중 하나)에서 서버가 예상 포트에없는 것까지 다양합니다.
/etc/mysql/my.cnf에서 서버가 바인드 된 포트를 확인하십시오. 그것은 당신의 연결에있는 일치하면 서버 자체와 클라이언트를 실행하는 컴퓨터의 명령 줄에서 mysql과 연결하십시오. 다른 곳이 아닌 다른 곳에서 작동하면 방화벽 / 라우터 구성 문제가있을 수 있습니다.
내 경우에는 hosts.deny에 ALL : ALL이 있습니다. 관리자 ALL로 변경 : PARANOID는 ssh를 강화할 때 문제를 해결했습니다.
나를 위해 구성 파일은 "/etc/mysql/mysql.conf.d/mysqld.cnf"에서 바인드 주소를 주석 처리하고 있습니다.
여기서 볼 수 있듯이 : 네트워크 건너 뛰기 대신 기본값은 이제 더 호환되고 덜 안전하지 않은 localhost에서만 수신하는 것입니다.
MySQL 워크 벤치에서 연결할 때 똑같은 오류가 발생했습니다. 해결 방법은 다음과 같습니다. 내 /etc/my.cnf 구성 파일에 서버의 IP 주소로 설정된 bind-address 값이 있습니다. 복제를 설정하려면이 작업을 수행해야했습니다. 어쨌든 두 가지를 수행하여 해결했습니다.
- my.cnf 파일의 바인드 주소에서 연결하는 데 사용할 수있는 사용자를 만듭니다.
예 :
CREATE USER 'username'@'bind-address' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON schemaname.* TO 'username'@'bind-address';
FLUSH PRIVILEGES;
- 바인드 주소와 일치하도록 MySQL 워크 벤치의 연결 세부 정보에서 MySQL 호스트 이름 값을 변경합니다.
문제는 나에게 아주 어리석은 것이었다.
AWS EC2 Ubuntu 머신에서 동일한 문제가 발생했습니다 (MariaDB는 당분간 로컬에 설치됨). 그래서 SSH 터널링을 시도했고 동일한 문제가 발생했습니다. 그래서 터미널을 통해 ssh 터널을 시도했습니다.
ssh -L13306:127.0.0.1:3306 root@ip.address -i my/private/key.pem
그리고 그것은 나에게 이렇게 말했습니다.
사용자 "root"가 아닌 "ubuntu"사용자로 로그인하십시오.
ssh 구성과 마찬가지로 ssh 사용자를 루트에서 우분투로 변경했으며 제대로 연결되었습니다.
따라서 SSH 연결 사용자를 확인하십시오.
나는 이것을 감독했고, 그래서 내 시간의 너무 30 분 동안, 이것이 당신에게 도움이되기를 바랍니다.
이 동일한 문제에 직면하여 Bind Address 를 앞뒤로 아무 소용이 없습니다. 나를위한 해결책은 권한 을 플러시하는 것이었다 .
mysql> FLUSH PRIVILEGES;
나를 위해 설정 bind-address = 0.0.0.0
에서 mysql/my.cnf
일했다. 기본적으로 모든 주소 (하지만 여전히 하나의 포트)를 수신합니다.
그리고 서버를 다시 시작하는 것을 잊지 마십시오. systemctl restart mysql
나는 방금 같은 문제가 있었지만 내 경우에는
서비스 mysqld 시작
동일한 문제인 Ubuntu 18.04에서 내 db 도커 컨테이너 를 연결하려고합니다 .
먼저 실행하여 장치를 확인하여 nmcli dev
장치 docker0
가 연결되어 있는지 확인하십시오 .
연결되지 않은 경우 Docker 서비스를 다시 시작하십시오.
sudo service docker restart
원격으로 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에 연결할 때 로컬 앱에서 일부 오류가 발생했습니다.
나는 동일한 문제가 있었다. 이 문제를 해결하기 위해 호스트를 localhost : 3306에서 localhost로 변경했습니다. 따라서 연결을 위해 부적절한 포트를 지정하면 오류가 발생할 수 있습니다. 기본값으로 두는 것이 좋습니다.
데이터베이스 디렉토리 읽기-쓰기 권한도 내가 찾은 문제입니다. 응용 프로그램이 db 위치에서 파일을 rw 할 수 있는지 확인하십시오. 테스트를 위해 chmod 777을 사용해보십시오.
아파치 방화벽은 IP 주소를 차단합니다. 따라서 액세스 권한을 부여하려면 다음 명령을 사용하십시오.
firewall-cmd --permanent --zone = trusted --add-source = YOUR_IP / 32
방화벽 -cmd --permanent --zone = trusted --add-port = 3306 / tcp
방화벽 -cmd --reload
나는 같은 문제에 직면했다. AllowTcpForwarding Yes 를 확인하고 설정하려고 시도했지만 sshd_config에 누락되어 도움이되지 않았습니다. sshd_config 또는 my.cnf를 변경하지 않았습니다. ssh 호스트 이름이 mysql 호스트 이름 (localhost 사용)과 동일 하지 않은지 확인하십시오 .
워크 벤치에서 +를 선택하여 새 연결을 추가하고 다음을 설정합니다.
- 연결 방법 : SSH를 통한 표준 TCP / IP
- SSH 호스트 이름 : 192.168.0.50:22 (원격 SSH 서버 IP 및 포트 교체 (선택 사항))
- SSH 사용자 이름 : sshuser
- 암호를 설정하거나 프롬프트에서 추가 할 수 있습니다.
- MYSQL 호스트 이름 : localhost 또는 127.0.0.1
- MYSQL 서버 포트 : 3306
- 암호를 설정하거나 프롬프트에서 추가 할 수 있습니다.
연결을 테스트하십시오. 성공하면 OK를 누르십시오. 바이올라!
또 하나의 이유 ...
나는 모든 것이 사용자 정의되고 동일한 오류로 인해 연결할 수없는 Ubuntu 서버를 만났습니다.
이 설정은 내부에있었습니다 /etc/ssh/sshd_config
PermitTunnel no
로 변한 후
PermitTunnel yes
MySQL DB에 원격으로 연결할 수있었습니다.
bind-address가 구성 파일에없고 mysql이 AWS 인스턴스에서 호스팅되는 경우 보안 그룹을 확인하십시오. 이상적인 조건에서 인바운드 규칙은 포트 3306의 모든 연결을 수락하고 아웃 바운드 규칙은 모든 유효한 IP에 다시 응답해야합니다.
나는 3 단계 아래에서 나를 위해 일했습니다.
bind-address = "YOUR MACHINE IP"
의my.cnf
에서 파일을 /etc/my.cnf에다음 명령으로 서비스를 다시 시작하십시오.
service httpd restart
GRANT ALL PRIVILEGES ON yourDB.* TO 'username'@'YOUR_APPLICATION_IP' IDENTIFIED BY 'YPUR_PASSWORD' WITH GRANT OPTION;
비슷한 오류가 발생했습니다 (MYSql Workbench를 통해 AWS에서 MYSQL에 연결). 나는 전에 잘 연결하고 갑자기 작동을 멈 췄고 다시 작동하지 않았습니다.) 내 연결은 키 파일로 보호되는 SSH를 통해 이루어졌습니다.
내가 시간이 초과되었다는 것이 밝혀졌습니다. 그래서 SQL 연결 시간 제한을 30 초 (기본값 10에서)로 늘렸고 다시 진행하는 것이 좋습니다. 시도 할 사항 (비슷한 설정에있는 경우)
- 터미널에서 서버로 직접 ssh 할 수 있습니까 (키 파일 권한 등의 문제 감지)?
- 그런 다음 터미널을 통해 동일한 사용자 / 비밀번호로 MySQL에 연결할 수
mysql -u [username] -p [database]
있습니까? 사용자 권한 문제 등을 확인합니다. - 두 가지가 모두 작동하면 매개 변수가 문제가 아니며 나와 같은 시간 초과 문제가 될 수 있습니다 (시간 초과 오류가 아니라 권한을 확인하도록 요청한 경우 제외)
'IT' 카테고리의 다른 글
Git 브랜치를 로컬 및 원격으로 이름을 바꾸시겠습니까? (0) | 2020.07.22 |
---|---|
null을 캐스팅하면 Convert.ToString (null)이 다른 값을 반환하는 이유는 무엇입니까? (0) | 2020.07.22 |
사용자를 위해 mysql 서버에 원격 액세스 권한을 부여하는 방법은 무엇입니까? (0) | 2020.07.21 |
TeX / LaTeX의 후임자가 보입니까? (0) | 2020.07.21 |
스파크 -CSV 파일을 DataFrame으로로드 하시겠습니까? (0) | 2020.07.21 |