본문 바로가기

프로그래밍언어/DB

MySQL 5.7/8.0 외부 접근 허용 ,권한, 유저 추가

ODBC등 외부에서 MySQL에 접속을 하려면, MySQL 접속이 허용이 필요

 

mysq 5.7 버전 까지는 grant all 설정으로 유저생성과 권한을 같이 줄 수 있었지만

8버전은 유저 생성과 권한 부여를 따로 해주어야 한다

mysql> create user  계정@'%' identified by '암호'

mysql> grant all privileges on DB.테이블(*) to 계정@'%' with grant option;

mysql > flush privileges;

 

 

----------------------5.7버전----------------------

 

1. 테이블 살펴보기
먼저, mysql에 들어가서 다음 방법을 이용해 접근 상태 확인.
mysql> use mysql;
mysql> select host, user, password from mysql.user;
출력된 정보를 확인해보면, localhost나 127.0.0.1만 등록이 되어있는 것을 확인 할 수 있는데, 외부에서 접근이 되게 하려면, 따로 등록이 필요.

 

2. 권한 설정 하기


설정을 할 때, 특정 IP나 특정 IP대역만 허용을 하거나, 전체 허용.


1) 특정 IP 접근 허용 설정
mysql> grant all privileges on DB명.테이블명 to 'root'@'220.000.00.000' identified by 'root의 패스워드';


2) 특정 IP 대역 접근 허용 설정
mysql> grant all privileges on DB명.테이블명  to 'root'@'220.000.%' identified by 'root의 패스워드';


3) 모든 IP의 접근 허용 설정
mysql> grant all privileges on DB명.테이블명  to 'root'@'%' identified by 'root의 패스워드'

 

3. 등록확인 후 적용시키기
등록이 끝났으면, 계정에 설정한 IP혹은 %가 등록 되어있는지 확인
mysql> select host, user, password from mysql.user;
mysql> flush privileges;

 

4. LISTEN IP 대역 변경

my.cnf 설정파일에서 bind-address라는 부분을 주석처리.
vi /etc/my.cnf
# bind-address = 127.0.0.1

5. mysql 재시작
주석처리가 끝났으면, mysql을 재시작.
/etc/init.d/mysqld restart

 

 

 

 

6.   mysql 리눅스 방화벽 설정 ( 3306 )

 

[root@localhost /]# iptables -I INPUT 1 -p tcp --dport 3306 -j ACCEPT

[root@localhost /]# service iptables save

iptables: 방화벽 규칙을 /etc/sysconfig/iptables에 저장 중: [ OK ]

[root@localhost /]# vi /etc/sysconfig/iptables

[root@localhost /]# service iptables restart

iptables: 체인을 ACCEPT 규칙으로 설정 중: filter [ OK ]

iptables: 방화벽 규칙을 지웁니다: [ OK ]

iptables: 모듈을 언로드하는 중: [ OK ]

iptables: 방화벽 규칙 적용 중: [ OK ]

 

 

reject 상단에 정책을 설정