[mysql] 외부접속 허용을 위한 권한설정

최승언·2022년 10월 6일
0

mysql

목록 보기
7/18

로컬외에 DB서버를 따로 운영한다면 내 DB에서 외부접속이 가능하도록 해당 계정에 설정을 바꿔줘야 한다. 그런데 mysql 8.0 이하는 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '패스워드' 명령어로 가능했었는데 8.0 부터는 안먹힌다고 한다.

해당 stackoverflow https://stackoverflow.com/questions/50177216/how-to-grant-all-privileges-to-root-user-in-mysql-8-0

1. 유저 추가

CREATE USER '<유저명>'@'%' IDENTIFIED BY '<비밀번호>';
# ex: CREATE USER 'root'@'%' IDENTIFIED BY '12345678';
GRANT ALL PRIVILEGES ON *.* TO '<유저명>'@'%' WITH GRANT OPTION;
# ex: GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

'%'는 모든 곳에서 외부접속을 허용한다는 뜻이다. '%' 대신 특정 ip만 허용하고 싶다면 '172.25.0.11' 이나 '172.25.0.%' 처럼 특정 ip나 대역을 지정할 수도 있다.

*.*는 모든 db에 접근권한을 준다는 것이다. 제한하려면 특정 db명만 적으면 된다.

# ex
GRANT ALL PRIVILEGES ON dbname.* TO 'root'@'%' WITH GRANT OPTION;

GRANT ALL은 모든 기능 권한을 준다는 것이다. 제한하려면 select, insert, update 등 제한하려는 기능만 추가하면 된다.

끝나면 아래 명령어로 확인 가능하다.

SELECT User, Host FROM mysql.user;

2. 유저 삭제

DROP USER '<유저명>'@'<권한>';
profile
작업하다가 막힌부분을 기록하는 곳.

0개의 댓글