파워노트

mysql 외부접속 허용. 본문

mysql

mysql 외부접속 허용.

파워킴 2020. 7. 12. 11:22
반응형

* mysql 처음 설치이후에 Workbench 등으로 접속을 시도시 보안적인 이슈로 workbench에서는 접속이 안되고 해당 mysql 서버에서만 접속이 되도록 처리 된다.

* 이를 허용하여 workbench 등에서 접속이 이루어 지도록 설정이 필요하다. 

* 물론 운영시점에서는 외부 접속 허용에 대한 고려가 이루어 져야 할것이다. 

* 이래 서버는 라즈베리파이4 셋팅이 된 서버이다. 

 

# mysql 접속 허용 포트 확인 

  - mysql 설치 및 실행 서버에 접속하여 netstat 확인 하면 . 3306 포트에 대해서 내부 아이피로만 설정이 되어 있는것을 확인 할 수 있다.  ( 127.0.0.1:3306 ) 

ubuntu@ubuntu:/etc/mysql$ netstat -anpt
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      -
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      -
tcp        0    360 192.168.25.240:22       192.168.25.1:50814      ESTABLISHED -
tcp6       0      0 :::22                   :::*                    LISTEN      -

 

# 리눅스 포트 외부접속 허용mysql 외부접속 환경설정 변경.

  - 환경설정파일인  mysql.conf 파일을 열어 

    #bind-address            = 127.0.0.1 부분을 주석 처리 한다.

  - 주석처리이후에는 mysql 서비스를 재실행 해준다. 

 

  - 설정변경이후에 다시 한번 netstat 로 포트상태를 확인해보자.

  - :::3306 로 변경되어 전체 ip 허용이 됨을 확인합니다. 

ubuntu@ubuntu:/etc/mysql$ netstat -anpt
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      -
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -
tcp        0    360 192.168.25.240:22       192.168.25.1:50814      ESTABLISHED -
tcp6       0      0 :::22                   :::*                    LISTEN      -
tcp6       0      0 :::3306                 :::*                    LISTEN      -

 

# mysql 계정 접속 허용. : 계정별 접속 허용 처리. 

  - mysql db에 접속하여 계정정보를 확인 해보자. 

  - root 계정이 localhost로만 허용되어 있는것이 확인 된다.  이후에 grant를 등록 하고 다시 해당 부분을 확인 해보자.

ubuntu@ubuntu:/etc/mysql$ mysql -u root -p mysql


mysql> select host, user, authentication_string from user;
+-----------+------------------+-------------------------------------------+
| host      | user             | authentication_string                     |
+-----------+------------------+-------------------------------------------+
| localhost | root             | *607BE9D00D3F1A14E90D907B6184697F31232117 |
| localhost | mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| localhost | mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| localhost | debian-sys-maint | *10BF242108C7B2337A5B94763EF56C87ED9B8987 |
+-----------+------------------+-------------------------------------------+
4 rows in set (0.00 sec)

 

  - grant 등록후 다시 user 정보를 확인해보자. 

  - 여기서는 root 계정에 대해 % 모든 외부 허용으로 설정을 해보았습니다.

  ( root 계정 전체 허용은 테스트 이므로 별도 계정을 생성하여 진행하는것이 바람직해 보입니다. )

mysql> grant all privileges on *.* to root@'%' identified by '패스워드' with grant option;
mysql> flush privileges;
mysql> select host, user, authentication_string from user;
+-----------+------------------+-------------------------------------------+
| host      | user             | authentication_string                     |
+-----------+------------------+-------------------------------------------+
| localhost | root             | *607BE9D00D3F1A14E90D907B6184697F31232117 |
| localhost | mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| localhost | mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| localhost | debian-sys-maint | *10BF242108C7B2337A5B94763EF56C87ED9B8987 |
| %         | root             | *607BE9D00D3F1A14E90D907B6184697F31232117 |
+-----------+------------------+-------------------------------------------+
5 rows in set (0.00 sec)

 

  * 정리를 해보면 .

    - mysql.cnf의  bind-address를 주석으로 막고 ubuntu 외부접속 포트 허용을 해주고,

    - mysql의 grant user에 대해 접속 권한 허용을 설정해 주면 기본적으로 외부에서 mysql client를 통해 접속이 가능해 집니다. 

 

 

* 추가적으로 grant 기본사용을 정리 하자면 .

# 기본적인 사용자 권한주기
grant all privileges on [디비이름.*] to [아이디@접속허용Host] identified by ['접속비밀번호'] with grant option;
flush privileges;

# root 사용자 모든권한주기
grant all privileges on *.* to root@'%' identified by '비밀번호' with grant option;
flush privileges;

 

* 이제 기본적인 workbench와 같은 툴에서 접속 허용이 되므로 디테일한 설정은 workbench에서 해도 된다. 

 

반응형

'mysql' 카테고리의 다른 글

[Workbench] windows 10 , MySql Workbench 8.0 설치 하기  (1) 2020.07.12
Mysql Index 확인  (0) 2020.04.24
Comments