오류 2003(HY000):MySQL 서버에 연결할 수 없음 (111)
이 질문은 다음 질문과 관련이 있습니다.
로컬 컴퓨터에 새 MySQL(5.1) 서버를 구성하고 있습니다.데이터베이스에 대한 원격 액세스를 제공해야 합니다.다음 단계를 수행했습니다.
bind-address내 .cnf:# bind-address = 192.168.1.3권한 부여:
GRANT ALL PRIVILEGES ON *.* TO 'nickruiz'@'%' IDENTIFIED BY PASSWORD 'xxxx';- 라우터에서 포트 포워딩 설정(TCP 및 UDP, 포트 3306, 192.168.1.3)
방화벽에 대한 ipt 테이블 구성
sudo iptables -I INPUT -p udp --dport 3306 -j ACCEPT sudo iptables -I INPUT -p tcp --dport 3306 --syn -j ACCEPT sudo iptables-savemysql을 다시 합니다.
sudo /etc/init.d/mysql restart
테스트를 하면 다음을 얻을 수 있습니다.
LAN:
mysql -h 192.168.1.3 -u nickruiz -p
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 95
Server version: 5.1.63-0ubuntu0.11.04.1 (Ubuntu)
원격:
mysql -h 1xx.xx.4.136 -u nickruiz -p
ERROR 2003 (HY000): Can't connect to MySQL server on '1xx.xx.4.136' (111)
분명 제가 글로벌 IP 주소를 사용할 수 없게 하는 잘못된 점이 있습니다.
주의:
- 저는 동일한 기계에서 원격 연결 테스트를 해보았고, 원격 기계에서 SSH를 통해서도 테스트를 해보았습니다.
- ISP가 정적 IP를 제공했는지 확신할 수 없습니다.
무슨 생각 있어요?
업데이트: 텔넷이 작동하지 않는 것 같습니다.
telnet 192.168.1.3 3306
Trying 192.168.1.3...
Connected to 192.168.1.3.
Escape character is '^]'.
E
5.1.63-0ubuntu0.11.04.1,0g8!:@pX;]DyY0#\)SIConnection closed by foreign host.
수신 포트를 다음과 같이 확인하십시오.
netstat -nat |grep :3306
티가 난다면
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
그것은 당신의 원격 연결을 위해서 괜찮습니다.
하지만 이 경우에 당신은
tcp 0 192.168.1.3:3306 0.0.0.0:* LISTEN
그것은 당신의 원격 연결을 위해서 괜찮습니다.방화벽도 확인해야 합니다(센토스/레드햇인 경우 테이블).
services iptables stop
시험용 또는 사용용:
iptables -A input -p tcp -i eth0 --dport 3306 -m state NEW,ESTABLISHED -j ACCEPT
iptables -A output -p tcp -i eth0 --sport 3306 -m state NEW,ESTABLISHED -j ACCEPT
원격 연결에 대한 허가 권한을 확인해야 할 또 다른 사항은 다음과 같습니다.
GRANT ALL ON *.* TO remoteUser@'remoteIpadress' IDENTIFIED BY 'my_password';
errno 111이 ECON Refused입니다. 라우터의 DNAT에 문제가 있는 것 같습니다.
ISP가 해당 포트를 필터링하고 있을 수도 있습니다.
원격 호스트(즉, 연결하려는 웹 호스팅 서버)가 포트 3306에서 나가는 트래픽을 허용하는지 확인합니다.
저는 이 상황에서 (100) 오류를 보았습니다.PC/Mac에서는 연결할 수 있지만 웹 사이트에서는 연결할 수 없습니다.MySQL 인스턴스는 인터넷을 통해 액세스할 수 있었지만 호스팅 회사는 포트 3306의 데이터베이스에 웹 사이트 연결을 허용하지 않았습니다.
호스트 회사에 포트 3306의 나가는 트래픽까지 웹 호스팅 계정을 열도록 요청하면 웹 사이트가 원격 데이터베이스에 연결될 수 있습니다.
/etc/mysql$ sudo nano my.cnf
나에게 도움이 되는 관련 부분:
#skip-networking
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = MY_IP
MY_IP을 사용하여 찾을 수 있습니다.ifconfig아니면curl -L whatismyip.org |grep blue.
mysql을 다시 시작하여 새 구성이 로드되었는지 확인합니다.
/etc/mysql$ sudo service mysql restart
원격 mysql db에 연결하는 데 동일한 문제가 발생했습니다.
다음과 같이 트래픽이 통과할 수 있도록 db 서버의 방화벽을 열어 수정했습니다.
sudo ufw allow mysql
사용하는 시스템이 CentOS/RedHat이고 rpm이 MySQL을 설치하는 방식이라면 /etc/폴더에 my.cnf가 없습니다. #where is mysql #cd/usr/share/mysql/cp -f/usr/share/mysql/mysql/my-medium.cnf/etc/my.cnf를 사용할 수 있습니다.
저도 당신과 같은 질문이 있습니다. 저는 와이어샤크를 사용하여 전송된 TCP 패킷을 캡처합니다. 를 사용할 때 발견했습니다.mysql원격 호스트를 연결하는 bin, 그것은 리모트의 3307 포트를 연결합니다. 그것은 나의 결점입니다./etc/mysql/my.cnf, 3307은 다른 project mysql port 이지만 나는 그 설정을 변경합니다.my.cnf[클라이언트] 파트, 사용할 때-P3306 포트를 지정하는 옵션입니다. 괜찮습니다.
위와 같이 bind-address를 올바르게 설정했지만 mysql 서버를 다시 시작하는 것을 잊었습니다(또는 재부팅) :) face palm - 그래서 그것이 나에게 이 오류의 근원입니다!
암호에 특수 문자가 있을 때는 암호를 랩핑해야 합니다.''db에 연결하기 위해 다음을 사용할 수 있습니다.
mysql -uUSER -p'pa$$w0rd'
저도 같은 오류가 있었는데 이 솔루션으로 해결했습니다.
제가 같은 오류가 있어서 이해를 못했지만 모뎀이 mysql과 같은 포트를 사용하고 있다는 것을 알게 되었습니다.전 아파치2 서비스를 그만뒀어요sudo systemctl stop apache2.service그리고 xammp를 다시 시작했습니다.sudo /opt/lampp/lampp start
아마도, 만약 당신이 아직 mysql의 비밀번호를 사용하지 않았다면,1045 (28000): Access denied for user 'root'@'localhost' (using password: YES), 그리고 빈 문자열을 비밀번호로 전달해야 합니다.
말씀하신 단계에서 볼 수 없는 것처럼 확실하지 않습니다.
FLUSH PROFIGES [mysql 데이터베이스의 grant tables에서 권한을 다시 로드합니다]:
플러시 권한,
GRANT 후에 실행해야 합니다.
도움이 되길 바랍니다!
언급URL : https://stackoverflow.com/questions/11758339/error-2003-hy000-cant-connect-to-mysql-server-111
'programing' 카테고리의 다른 글
| Responsive 메뉴로 신체 스크롤 방지 방법 (0) | 2023.10.02 |
|---|---|
| Python에서 lxml 라이브러리를 사용하여 xml 파일 쓰기 (0) | 2023.10.02 |
| 각도 : ng-if 지시로 조건을 표현하는 방법? (0) | 2023.10.02 |
| 스프링 부츠 테스트 "형식의 적격 빈 사용 불가" (0) | 2023.10.02 |
| 데이터 프레임을 벡터(행 단위)로 변환 (0) | 2023.10.02 |