programing

오류 2003(HY000):MySQL 서버에 연결할 수 없음 (111)

jooyons 2023. 10. 2. 14:59
반응형

오류 2003(HY000):MySQL 서버에 연결할 수 없음 (111)

이 질문은 다음 질문과 관련이 있습니다.

로컬 컴퓨터에 새 MySQL(5.1) 서버를 구성하고 있습니다.데이터베이스에 대한 원격 액세스를 제공해야 합니다.다음 단계를 수행했습니다.

  1. bind-address내 .cnf:

    # bind-address      = 192.168.1.3
    
  2. 권한 부여:

    GRANT ALL PRIVILEGES ON *.* TO 'nickruiz'@'%' IDENTIFIED BY PASSWORD 'xxxx';
    
  3. 라우터에서 포트 포워딩 설정(TCP 및 UDP, 포트 3306, 192.168.1.3)
  4. 방화벽에 대한 ipt 테이블 구성

    sudo iptables -I INPUT -p udp --dport 3306 -j ACCEPT
    
    sudo iptables -I INPUT -p tcp --dport 3306 --syn -j ACCEPT
    
    sudo iptables-save
    
  5. mysql을 다시 합니다.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

반응형