2013-04-23 1 views
29

와 원격 MySQL 서버에 연결할 수 없습니다, 그것은 작동하지 않았다 및 오류 힌트오류 61

했다
ERROR 2003 (HY000) Can't connect to MySQL server on '<remote-ip>' (61) 

그러나 ssh <remote-ip>을 시도하고 MySQL을 로컬로 mysql -u root -p에 연결하면 문제가 없습니다. 여기

는 사용자 테이블 (SELECT User, Host FROM mysql.user;)의 일부인 다음 먼저, iptable 여기

+------------------+----------------+ 
| User    | Host   | 
+------------------+----------------+ 
| root    | %    | 
| other_users  | <remote-ip> | 
| root    | localhost  | 
+------------------+----------------+ 

입니다 :

Chain INPUT (policy ACCEPT) 
num target  prot opt source    destination   
1 RH-Firewall-1-INPUT all -- 0.0.0.0/0   0.0.0.0/0   

Chain FORWARD (policy ACCEPT) 
num target  prot opt source    destination   
1 RH-Firewall-1-INPUT all -- 0.0.0.0/0   0.0.0.0/0   

Chain OUTPUT (policy ACCEPT) 
num target  prot opt source    destination   

Chain RH-Firewall-1-INPUT (2 references) 
num target  prot opt source    destination   
1 ACCEPT  all -- 0.0.0.0/0   0.0.0.0/0   
2 ACCEPT  icmp -- 0.0.0.0/0   0.0.0.0/0   icmp type 255 
3 ACCEPT  esp -- 0.0.0.0/0   0.0.0.0/0   
4 ACCEPT  ah -- 0.0.0.0/0   0.0.0.0/0   
5 ACCEPT  udp -- 0.0.0.0/0   224.0.0.251   udp dpt:5353 
6 ACCEPT  udp -- 0.0.0.0/0   0.0.0.0/0   udp dpt:631 
7 ACCEPT  tcp -- 0.0.0.0/0   0.0.0.0/0   tcp dpt:631 
8 ACCEPT  all -- 0.0.0.0/0   0.0.0.0/0   state RELATED,ESTABLISHED 
9 ACCEPT  tcp -- 0.0.0.0/0   0.0.0.0/0   state NEW tcp dpt:22 
10 REJECT  all -- 0.0.0.0/0   0.0.0.0/0   reject-with icmp-host-prohibited 
11 ACCEPT  tcp -- 0.0.0.0/0   0.0.0.0/0   state NEW tcp dpt:3306 

그래서, 문제는 무엇인가?

+0

여기 내 게시물을 확인하십시오. 그것은 도움이 될 수 있습니다 : http://stackoverflow.com/a/22637763/676508 –

답변

57

확인하여 MySQL 서버에서 netstat와 소켓에서 수신 대기중인 경우

bind-address = 0.0.0.0 

다음으로 서버를 재시작하고 다시 시도하십시오.

+0

줄에는 " 'tcp 0 0 ::: 3306 ::: * LISTEN 100 1'''. '':::'''은 여기서 무엇을 의미합니까? 그것은 mysql이 IPv6 주소에 바인딩된다는 것을 의미합니까? – rAy

+0

그 것처럼 보일지 모르겠지만 확신 할 점은 모르겠다. localhost에서 ip를 통해 연결을 시도 했습니까? ssh를 통해 연결하고 "mysql -u user -p -h 127.0.0.1"또는 서버의 공용 IP 주소를 연결하고 연결할 수 있는지 테스트하십시오. 간단한 "mysql -u user -p"또한 소켓 파일을 통해 연결할 수 있습니다. – Kaffee

+0

'''mysql -u 사용자 -p -h 127.0.0.1''''''''mysql -u 사용자 -p -h 0.0.0.0'''와'''mysql -u 사용자 -p -h ' ''모두 잘 작동합니다. @ Kaffee – rAy

1

은 방화벽이나이 시도 관련 문제가 될 수 있습니다 :

GO 서버 관리에 -> MySQL을 -> 설정 -> 확인 : MySQL은

+0

나는 CentOS를 사용하여 MySQL의 네트워크 연결을 허용하는 방법 – rAy

1

을 가지고 네트워크 연결

그런 다음 다시 시작 허용 MySQL에서 "Access-Denied Errors의 원인"을보십시오.

http://dev.mysql.com/doc/refman/5.1/en/access-denied.html

Possibile 서버 또는 다른 프로그램이 동일한 포트를 사용에 실패한 구성은 무엇입니까? 또는 서버가 "127.0.0.1"에 바인딩되어 있습니까? my.cnf 파일을 변경해보십시오.

netstat -tulpen 

을하지 또는 경우에만 로컬 호스트의 경우, 3306

검색 my.cnf 파일을 확인하고 bind-address 라인을 검색 :

+0

my.cnf에''bind-address'''가 없습니다 . '''bind-address = '''을 추가하면 전혀 작동하지 않습니다. – rAy

+0

MySQL 서버 시작 부분에 특정 IP 주소를 부여하십시오 : http://dev.mysql.com/doc/refman/5.1/en/server-options.html#option_mysqld_bind-address – Zaziki

20

확인 상태 :

netstat -tulpen 

구성 수정 :

nano /etc/mysql/my.cnf 
# Edit: 
bind-address = 0.0.0.0 

는 MySQL의 입력 및 권한 부여 :

mysql -umyuser -pmypassword 
# Run: 
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%'IDENTIFIED BY 'mypassword' WITH GRANT OPTION; 
FLUSH PRIVILEGES; 
exit 

다시 시작 MySQL의

/etc/init.d/mysql restart 
을3210
+2

정확함에도 불구하고, 경고없이 권한을 부여 할 때 나는 더 조심스럽게 대답 할 것입니다. – Purefan

+0

이것이 저에게 효과적입니다. 하지만 2 단계와 4 단계에서 sudo를 사용해야했습니다. – Srichakradhar

13

MAMP를 실행하는 경우 액세스 허용을 잊지 마십시오. (MySQL 패널, "MySQL에 네트워크 액세스 허용"확인)

+0

@andyp 왜 그렇게 생각하십니까? 그것은 나에게 매우 (아주 짧지 만 여전히) 앙갚음처럼 보입니다. –

+0

@Jan : 당신 말이 맞아요. 나는이 말을 해설하기에는 너무 빠르다. – andyp

+0

달콤하고 간단한 플러스 효과적인 해결책. Thanx –

7

CentOS 7을 서버에 설치 한 직후에이 문제가있었습니다. 원격 컴퓨터의 Mysql Workbench를 통해 액세스 할 수 없습니다.

방화벽 구성에 문제가 있습니다.다음

sudo firewall-cmd --zone=public --permanent --add-service=mysql 

및 방화벽 다시 시작 : 결국, 솔루션을 수행 할 때 와서 그들이 그렇게 파일을 변경 bind-address가에있다 MySql 5.7

sudo systemctl restart firewalld 
10

을 :

/etc/mysql/mysql.conf.d/mysqld.cnf 

대신 :

/etc/mysql/my.cnf 
+1

감사합니다. – ServerSideSkittles

+0

위와 동일 ^ – KGCybeX

관련 문제