Mysql 원격접속


기본적으로 원격 접속은 mysql 디비의 user,db 테이블의 host 필드에 의해 정해 진다
host 값이 '%' 이면 모든 접속 허용 'xxx.xxx.xxx.xxx' 이면 해당 아이피만 접속 허용


계정 생성시 아래와 같이 해도 된다.
mysql> CREATE USER '[유저아이디]'@'[아이피]' IDENTIFIED BY '[유저비번]';
mysql> GRANT [권한] ON [디비명].* TO '[유저아이디]'@'[아이피]';
*[권한] : All 혹은 all privileges 일 경우 모든 권한, 그외 SELECT, INSERT 식으로 넣어준다.
*[아이피] : 모든 아이피일 경우 % 로 설정 특정 아이피는 해당 아이피 기입
mysql> flush privileges;
@http://www.bannyang.com/entry/40009562864

위 설정으로 안될 경우 살펴 봐야 할부분
# find -name my.cnf -print
# vi /etc/my.cnf
my.cnf 파일에서 
bind-address = 127.0.0.1 와 skip-networking 를 찾아서 주석 처리후 mysql 재구동
..
# bind-address = 127.0.0.1
..
# skip-networking
...

@http://pneuma08.tistory.com/22

그래도 안될 경우
사실 여기 까지는 알고 있던 기본적인 설정이라 할 수 있다.
그런데 엉뚱한 곳의 문제로 원격 접속이 안되었다. 바로 iptables 문제!


iptables 에서 3306 포트 확인
# vi /etc/sysconfig/iptables  혹은 # iptables -L
3306 혹은 mysql 이 없다면 프롬프트상에서 입력 아래를 입력
# iptables -A RH-Firewall-1-INPUT -j ACCEPT -m state --state NEW -p tcp --dport 3306 
하지만 이경우 reject 위에 올 수도 있으므로 "/etc/sysconfig/iptables" 파일을 직접 수정할 것을 권장
/etc/sysconfig/iptables에 아래를 입력
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
를 추가 한다.
iptables는 기입된 순서대로 타기때문에 아래의 reject 보다 항상 위에 와야 한다.
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited

마지막으로 저장한다(리부팅해도 적용)
# /sbin/service iptables save
@http://web.mit.edu/rhel-doc/4/RH-DOCS/rhel-sg-ko-4/s1-fireall-ipt-act.html

그런 다음 # reboot

그래도...혹시라도 안된다면.
/etc/hosts.deny 를 확인

참고로 iptables 의 내용
# Generated by iptables-save v1.3.5 on Wed Nov 18 18:03:51 2009 *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [152:23203] :RH-Firewall-1-INPUT - [0:0] -A INPUT -j RH-Firewall-1-INPUT -A FORWARD -j RH-Firewall-1-INPUT -A RH-Firewall-1-INPUT -i lo -j ACCEPT -A RH-Firewall-1-INPUT -p icmp -m icmp --icmp-type any -j ACCEPT -A RH-Firewall-1-INPUT -p esp -j ACCEPT -A RH-Firewall-1-INPUT -p ah -j ACCEPT -A RH-Firewall-1-INPUT -d 224.0.0.251 -p udp -m udp --dport 5353 -j ACCEPT -A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 20 -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 2002 -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 25 -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 40000:50000 -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 6000:6999 -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited COMMIT # Completed on Wed Nov 18 18:03:51 2009