본문 바로가기

MySQL

리눅스에 mysql 설치 후 원격으로 로그인 안되는 문제 해결

mysql 을 리눅스 서버에 설치하고 원격의 클라이언트에서 툴을 이용해서 접근하려 하니 접속이 안되는 경우가 있다. 이때는 두가지를 의심해 봐야 한다. 

첫째,리눅스의 방화벽이 3306 Port 의 접속을 허용하고 있는가 ?   

둘째, mysql 계정이 원격지에서 로그인 할 수 있는가 ?

셋째, 그래도 안되면 ... 

 

I. 리눅스 방화벽 조정 하기 : iptables 를 사용하고 있다면

 

1. 리눅스 방화벽 확인 하기

 

iptables -L

 

- 아래의 그림을 보면 ssh, ftp, http 에 대한 허용을 볼수 있을 뿐 어디에도 mysql 은 없는 것을 확인 할 수 있다.

 

 

 

2. 방화벽에 mysql Port 허용 하기

 

sudo vi /etc/sysconfig/iptables

 

3. 허용 하는 구문 추가하기

 

-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT

 

※ 방화벽 설정은 순서가 중요하다. 허용하고 난후 거부해야 한다.

 

 

4. 방화벽 재 시작 하기

 

sudo /etc/init.d/iptables restart

 

5. 재 확인 하기

 

iptables -L

 

- 아래 그림과 같이 mysql port 가 살아 있는 것을 알 수 있다.

 

 

 

※ 그런데 ubuntu 에서는 ufw를 이용해서 방화벽을 설정하고 그것이 더 단순하다. 

    아래 IV 을 참고 하면 된다. 

 

 

▶ Cnetos 7 에서 사용한 방화벽 조정 하기

 

1. 포트 추가 하기 : 3306 기본 포트 허용

 

sudo firewall-cmd --permanent --add-port=3306/tcp

 

2. 방화벽 재로딩 하기

 

sudo firewall-cmd --reload

 


 

II. mysql 계정 원격 로그인 권한 부여하기

 

1. mysql 에 접속하기

 

- 로컬서버에서 mysql 에 접속 한다.

mysql -uroot -p

 

2, 권한 부여 하기

 

- IP 주소 대신  '%' 를 넣으면 모든 곳에서의 접속을 허용한다는 의미 임.

 

GRANT ALL PRIVILEGES ON *.* TO '사용자명'@'IP주소' IDENTIFIED BY '비밀번호';

 

3. 권한 적용 하기

 

FLUSH PRIVILEGES;



III. 아무리 해도 안된다. 


1. bind-address 수정 하기 


sudo vi /etc/mysql/my.cnf



#bind-address           = 127.0.0.1


# 아래에 서버의 주소를 입력해 준다. 


bind-address = 192.168.123.100



2. mysql 재시작하기 

sudo service mysql


IV.  방화벽은 사실 ufw 를 사용하는 경우가 많다. 


1. 설정방법은 아래 링크 참조한다. 


http://www.ubuntu-kr.org/wiki/doku.php?id=program:ufw%EC%84%A4%EC%A0%95