티스토리 뷰

study/Mysql

MySQL 데이타베이스 원격 연결 방법

알 수 없는 사용자 2008. 10. 7. 00:00

Error - "Host not allowed to connect to server" / MySQL 데이타베이스 연결 방법
본 에러는 MySQL 서버에 원격지에 있는 클라이언트 프로그램(SQLGate for MySQL) 이 접근 할수 있는
권한이 없기 때문입니다.

MySQL 서버 관리자에게 외부에서 접근 할수 있도록 요청하시기 바랍니다.
만약 Grant 권한을 줄수 있는 권한이 있으시다면 MySQL 을 텔넷이나 기타 프로그램으로 접속하여 해당
유저가 외부에서 접속이 가능하도록 세팅해 줍니다.
MySQL Server 가 Windows 에 설치되어 있는 경우

Start > Programs > Command Prompt
> CD\
> CD mysql\bin
MySQL 이 최초 설치시에는 Password 가 없기 때문에 패스워드를 지정하시기 바랍니다.
MySQL 서버에 Root 권한으로 접속할 경우

> mysql -u root -p password
올바르게 접속 될 경우 아래의 메세지가 나옵니다.


MySQL Database 에 접속하여 User 테이블의 상태를 확인합니다.
User 테이블은 mysql database 내에 존재합니다.

mysql>Use mysql
Database changed

mysql> SELECT Host, User, Select_priv, Insert_priv,Update_priv, Delete_priv FROM user;


위의 그림과 같이 각 유저의 권한 리스트를 볼수 있습니다.
또한 User 테이블은 MySQL Administrator 또는 Root 권한을 가진 User 만이 추가/수정/삭제할 수 있습니다.
외부에 접속할려고 하는 유저에 대해서 아래의 명령어를 수행합니다.
위에 User 중에 test 라는 유저를 외부에서 접속 가능하도록 명령 하는 예제입니다.
Host : localhost
User : test

mysql> GRANT ALL PRIVILEGES ON *.* to test@"%" IDENTIFIED BY 'test'
WITH GRANT OPTION;
Query OK, 0 rows affected (0.01 sec)


위에 명령이 올바르게 수행되었다면 꼭 아래의 명령어를 수행하시기 바랍니다.
Mysql>flush privileges;
다시 User 테이블을 확인합니다.
mysql> SELECT Host, User, Select_priv, Insert_priv,Update_priv, Delete_priv FROM user;


제일 하단에 기존의 test 계정외에계정이 또하나가 만들어집니다.
Host : %
User : test
test User 로 외부에서 접속이 가능하게 됩니다.



test 계정을 단지 emp 라는 Database 에만 접속 가능하게 하는 예제입니다.
  1. localhost 에서만 접속하기 위한 예제입니다.

    mysql>GRANT SELECT, INSERT, UPDATE, DELETE ON emp.* TO
    test@localhost IDENTIFIED BY "TestPassword";

    mysql>flush privileges;

  2. www.mysite.com 에서만 접속하기 위한 예제입니다.

    mysql>GRANT SELECT, INSERT, UPDATE, DELETE ON emp.* TO
    test@www.mysite.com IDENTIFIED BY "TestPassword";

    mysql>flush privileges;

  3. 외부 어떤곳에서든 접속하기 위한 예제입니다.

    GRANT SELECT, INSERT, UPDATE, DELETE ON emp.* TO
    test@”%” IDENTIFIED BY "TestPassword";

    mysql>flush privileges;

출처 : Tong - 새싹의 노래님의 My-SQL통