Putty로 서버에 접속 한 후 mysql -u limited10 -p 로 접속했을 때는 접속 가능했다.

그런데, HeidiSQL을 통해 DB를 만지려니 저 따위 오류 메세지를 뱉어 냈다... (사실 난 SQL 문법을 몰라서... GUI 프로그램을 쓰려고 ^^...)


원인은 원격 접속이 허용되지 않았기 때문이다.

http://hunking.tistory.com/1574 페이지를 따라 했다. 그러니 됐다.


이 부분이 중요하다.

mysql> GRANT ALL privileges ON 데이터베이스명.* TO 계정아이디@localhost IDENTIFIED BY '비밀번호';
mysql> GRANT ALL privileges ON 데이터베이스명.* TO 계정아이디@'%' IDENTIFIED BY '비밀번호';


위 페이지 내용.

mysql이 외부로도 서비스가 가능하게 하려면,

몇 가지의 확인사항과 그 외에 추가적인 설정을 해야 할 필요가 있습니다.



mysql이 설치된 서버의 운영체제를 명시해주시지 않아서,

유닉스 계열 운영체제라 가정하고 설명드리겠습니다.



#1.

우선, 기본적으로 mysql 은 tcp 3306 번 포트를 통해 서비스를 제공합니다.

따라서, 외부에서 DB에 접근할 수 있도록 하기 위해서는

서버의 tcp 3306 번 포트가 방화벽에 막혀 있지는 않은지 확인해야 하며

만약 막혀 있을 경우 열어주어야 합니다.



iptables -L 명령으로 차단/허용 리스트 조회가 가능합니다. 만약 포트가 막혀 있을 경우,



# iptables -I INPUT -p tcp --dport 3306 -j ACCEPT



명령으로 열어주시면 됩니다.





#2.

그 다음에는 DB 사용자 계정에 외부에서의 접근 권한을 부여해야 합니다.

외부에서 DB에 접근할때만 사용하는 계정을 새로 생성해도 됩니다.

'%' 의 의미는 외부에서의 접근을 허용한다는 의미입니다.

기존에 사용하던 계정에 외부 접근 권한을 부여하려면, Host를 '%' 로 하여 똑같은 계정을 추가해줍니다.



mysql> USE mysql;

mysql> INSERT INTO user (Host, User, Password) VALUES ('localhost', '계정아이디', password('비밀번호'));
mysql> INSERT INTO user (Host, User, Password) VALUES ('%', '계정아이디', password('비밀번호'));
mysql> FLUSH privileges;

계정이 생성되었다면, 그 계정이 접근할 수 있는 데이터베이스를 생성하고 권한을 부여해야 합니다.



mysql> CREATE DATABASE 데이터베이스명;

 mysql> GRANT ALL privileges ON 데이터베이스명.* TO 계정아이디@localhost IDENTIFIED BY '비밀번호';
mysql> GRANT ALL privileges ON 데이터베이스명.* TO 계정아이디@'%' IDENTIFIED BY '비밀번호';



이렇게 방화벽을 열고, 계정에 접근 권한을 부여하는 과정을 거치면

외부로 DB 서비스를 제공할 수 있게 됩니다.