mysql 원격에서 접속 하기

2017.08.21 07:00



회사에서 사용하는 DBMS가 전부 오라클인데 어쩌다 mysql 서버와 관련된 일을 떠맡았다. 


문제는 이중화된 app 서버에서 이 mysql 서버에 접속하려고 하면 app2서버는 접속 가능한데 app1 서버에서는 접속이 안되는 것이다. 

(기존 app2와만 연결되던걸 이중화 이슈로 app1에서도 접속 가능하도록 작업 필요)


여러가지 뻘짓을 하다가 얻은 최종 결론 : mysql은 DB에 원격으로 접속할 수 있는 호스트와 사용자를 미리 지정해 둔다는 점이다. 몰랐다. 하.하.하


mysql을 설치한 테스트용 PC에서만 접속해봐서 전혀 몰랐다. 

(mysql 설치 후 시작도 못해서 쩔쩔맸던 기억이^^;;  이건 아래 블로그글 참고)



원격접속을 해결하기 위한 작업 내용을 아래에 정리해보았다. (보안 등의 이유로 IP주소나 host명은 아래와 같이 변경했다)


- mysql server : www.company.co.kr(192.168.100.140)

- app1(mysql 접속 불가) : app1.company.co.kr(192.168.100.100)

- app2(mysql 접속 가능) : app2.company.co.kr(192.168.100.110)

- mysql 접속계정 : news / newspasswd



실마리 잡기


접속이 안되는 app1서버에서 mysql에서 해당 포트(3306)로 접속 가능한지 telnet 테스트

(만약 접속이 된다면 telnet 접속 화면이 나타나지는 않지만 에러 메시지가 아니라 뭔가 까만 바탕의 화면으로 바뀐다)


1
2
3
[app1@root /] telent 192.168.100.140 3306
 
Host 'app1.company.co.kr' is not allowed to connect to this MySQL server
cs


- 위에 나온 에러 메시지를 구글링해보니 mysql DB에서 원격접속을 허가하지 않은 IP에서 원격연결을 시도할 때 나오는 메시지라는 사실을 알았다. 




원격 접속 가능한 호스트, 사용자 확인


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[root@company bin]# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 561388
Server version: 5.0.51-log Source distribution
 
 
 
mysql> select HOST, USER, Password FROM mysql.user;
+-----------------+-------+-------------------------------------------+
| HOST            | USER  | Password                                  |
+-----------------+-------+-------------------------------------------+
| localhost       | root  | *7540F67EE4(생략)                         | 
| company         | root  |                                           | 
| 127.0.0.1       | root  |                                           | 
| localhost       |       |                                           | 
| company         |       |                                           | 
| localhost       | news  | *7540F67EE4                               | 
| 211.200.200.200 | news  | 49d7                                      | 
| 100.200.100.100 | news  | 49d7                                      | 
| 192.168.100.110 | news  | 49d7                                      | 
+-----------------+-------+-------------------------------------------+
 
9 rows in set (0.02 sec)
cs


- mysql에 app2(192.168.100.110)만 등록되어 있다




mysql 원격접속 사용자, 호스트 추가



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema | 
| mysql              | 
| company            | 
+--------------------+
3 rows in set (0.01 sec)
 
mysql> use mysql
Database changed
 
mysql> insert into user (host,user,password) 
values('192.168.100.100','news',password('newspasswd'));
Query OK, 0 rows affected (0.02 sec)
 
mysql> GRANT all privileges on *.* to 'news'@'192.168.100.100' 
identified by 'newspasswd' ;
Query OK, 0 rows affected (0.02 sec)
 
mysql> flush privileges;
Query OK, 0 rows affected (0.02 sec)
 
 
mysql> select HOST, USER, Password FROM mysql.user;
+-----------------+-------+-------------------------------------------+
| HOST            | USER  | Password                                  |
+-----------------+-------+-------------------------------------------+
| localhost       | root  | *7540F67EE4(생략)                         | 
| company         | root  |                                           | 
| 127.0.0.1       | root  |                                           | 
| localhost       |       |                                           | 
| company         |       |                                           | 
| localhost       | news  | *7540F67EE4                               | 
| 211.200.200.200 | news  | 49d7                                      | 
| 100.200.100.100 | news  | 49d7                                      | 
| 192.168.100.110 | news  | 49d7                                      | 
| 192.168.100.100 | news  | *7540F67EE4                               | 
+-----------------+-------+-------------------------------------------+
10 rows in set (0.02 sec)
 
cs


이렇게 아이피 추가작업 완료 후 접속 테스트를 했더니 잘 된다. ^___^



덧. 

패스워드가 호스트에 따라 다르게 나오는건 캐릭터셋하고 연관된거 같아서 콘솔에서 직접 작업하기도 하고 캐릭터셋을 변경하고 insert를 해보기도 했는데 계속 실패. 뭐.. 어떻든 접속은 되니까 넘어감.

또루아빠 SQL(오라클,mysql) , , , ,