[DB] 데이터베이스 외부접속 허용하기

dev2820·2021년 10월 15일
1

DB

목록 보기
3/3
post-thumbnail

먼저 확인할 것들

포트가 열려있나 확인하고 포트를 열어줍시다

# sudo ufw allow [DB 포트 번호]
sudo ufw allow 3306

다음으로 DB가 localhost에서만 접속할 수 있게 되어있진 않은가 확인해야합니다.

netstat -lntp

-l: listen, 연결 가능 상태인 경우만 출력한다
-n: number, 포트 번호를 같이 출력한다
-t: tcp, tcp 연결만 출력한다
p: 프로그램 이름을 출력한다

위 이미지처럼 127.0.0.1 번으로 시작하면 localhost만 접속 가능한 상태입니다. 이 경우 환경파일을 수정해줘야합니다.

vim /etc/mysql/mariadb.conf.d/50-server.cnf

mariadb야 언제까지 mysql로 쓸거야

bind-address 부분이 127.0.0.1로 되어있었을텐데 이 부분을 0.0.0.0으로 수정합니다.
0.0.0.0은 모든 ip가 접근할 수 있도록 설정하는 것이고, 특정 ip만 허용하려면 1.2.3.4,5.6.7.8 처럼 허용할 ip를 ,로 이어주면 됩니다.

다음으로 mariadb를 재시작해주면 됩니다.

service mysql restart

db 계정 준비

mysql.user table에 유저의 host 정보가 들어있습니다. mysql 데이터베이스에 접근하려면 root로 접속해야합니다.

# 로그인
mariadb -u root -p
# 유저명과 호스트주소를 출력
select user,host from mysql.user;

만약 host가 localhost라면 데이터베이스를 외부에서 접근할 수 없습니다. host를 특정 ip 또는 %로 설정해야 데이터베이스에 어떤 외부 ip에서든 접근할 수 있습니다. 특정 ip에서만 접속하게 하려면 특정 ip로 호스트를 설정하면 됩니다.

# 유저 삭제
# drop user '[유저명]'@'[호스트]';
drop user 'dev2820'@'localhost';

# 유저 생성
# create user '[유저명]'@'%' identified by '[비밀번호]';
create user 'dev2820'@'%' identified by '1234';

# DB 접근 권한 주기
# grant all privileges on [DB].[table] to '[유저명]'@'[호스트]';
grant all privileges on test_db.* to 'dev2820'@'%';

이제 외부 ip에서 접근하면 됩니다.

HeidiSQL로 접속해보겠습니다.

굿

profile
공부,번역하고 정리하는 곳

0개의 댓글