MySQL을 내 PC에 깔고 사용하는 유저가 아니라면 외부에서 접속이 필요하다. 외부에서 MySQL에 접근하려면 어떻게 해야할까? 우리가 일반적으로 사용하는 접속정보에 그 답이 있다. 접속정보는 대부분 아래와 같은 특성을 가진다.
위와 같은 정보를 제공하기 위해서는 몇 가지 작업이 필요하다.
PC나 서버나 방화벽이 있다. 외부에서 접근하기 위해서는 PORT를 열어주어야 한다. MySQL에서 사용되는 PORT는 다음과 같이 확인이 가능하다.
SHOW VARIABLES LIKE 'PORT';
MySQL을 기본적으로 3306을 사용한다. 내가 설치하지 않은 경우에는 아닐 수 있으니 PORT를 확인하는 방법은 알아두는 것이 좋다.
PORT를 확인했으면 firewall-cmd 명령으로 PORT를 열자.
sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent
sudo firewall-cmd --reload
MySQL은 USER를 내부에서 생성하고 권한을 부여할 수 있다. 학습하는 과정이니 root 유저를 사용하는 것도 괜찮으나 유저를 생성하여 권한을 부여해보자.
MySQL에 접속 후 USER를 생성하겠다. 유저를 생성하는 문장은 다음과 같다.
CREATE USER <USER명>@'<USER IP>' IDENTIFIED BY '<root 비밀번호>';
USER IP는 USER가 접속할 때, MySQL서버에서 보이는 IP이다. 대부분 공인IP나 내부 네트워크일 경우 ipconfig로 확인 할 수 있다. 확인하는 과정은 꽤 번거로운 과정이 있으므로 아래와 같이 '%'를 활용하여 모든 IP에서 접속이 가능하도록 만들겠다.
CREATE USER <USER명>@'%' IDENTIFIED BY '<root 비밀번호>';
그럼, zdevowl로 USER를 만들어보자.
CREATE USER zdevowl@'%' IDENTIFIED BY 'Passw0rd12#';
유저를 만든 다음에는 권한을 부여해야한다. 권한을 부여하는 구문은 다음과 같다.
GRANT <priv_type> ON <priv_level> TO <USER명>@'<USER IP>;
권한도 세분화하면 여러가지가 있으나 지금은 priv_type은 ALL, priv_level은 .로 부여하겠다.
GRANT ALL ON *.* TO zdevowl@'%';
권한을 부여한후에는 아래와 같이 FLUSH 해야한다.
FLUSH PRIVILEGES;
외부접속을 허용하는 과정이 생각보다 까다로웠으나 그 만큼 보안에 신경을 쓰고있다는 것을 느꼈다. 미래의 나에게 꽤 도움되는 글이라 생각한다.