Spring JdbcTemplate를 이용한 DB access 새믈 소스를 구현하던 중
현재의 환경 즉, 소스 실행은 Mac, DB는 가상환경(Parallels)에서 동작중인 Ubuntu에서 MariaDB를 사용하는 상황에서의 원격접속 문제를 우선 해결해야 진도를 나갈 수 있게 되어 그 방법을 정리해 보았다.
기본적으로 MySQL (MariaDB - 이하 MariaDB로 하겠다.)은 설치 시 local환경에서만 동작되도록 설정되기 때문에 원격접속을 위해서는 별도의 설정을 해야한다.
현재 unbuntu환경은 방화벽 설정이 없기 때문에 그 부분은 넘어가도록 하겠다.
step 1.>>>
/ect/mysql>vi my.cnf
...
bind-address = 127.0.0.1
...
위와 같은 부분이 있을 것이다. 이 부분을
...
#bind-address = 127.0.0.1
bind-address = *
...
로 변경한다.
step 2 >>>
$ service mysql status
--> 서비스가 동작중인지 확인
$ mysql -uroot -p
--> mysql로 login
MariaDB [none]> use mysql
MariaDB [mysql]> select host from user;
--> root계정의 것을 본다. localhost만 있다면 로컬에서만 접속 가능한 것이다.
MariaDB [mysql]> insert into user (host, user, password) values('%', 'root', password('패스워드'));
MariaDB [mysql]> grant all privileges on *.* to 'root'@'%';
--> 1. 위 2줄은 모든 IP를 허용하기 위한 것이다.
MariaDB [mysql]> insert into user (host, user, password) values('111.222.%', 'root', password('패스워드'));
MariaDB [mysql]> grant all privileges on *.* to 'root'@'111.222.%';
--> 2. 위 2줄은 특정 대역(여기선 111.222.*.*)에 대해서 허용
MariaDB [mysql]> insert into user (host, user, password) values('111.222.333.444', 'root', password('패스워드'));
MariaDB [mysql]> gralt all privileges on *.* to 'root'@'111.222.333.444';
--> 3. 위 2줄은 111.222.333.444 ip 하나에 대해서만 허용
MariaDB [mysql]> flush privileges;
--> 1, 2, 3번중 상황에 맞게 사용
****
MariaDB [mysql]> delete from user where host='%' and user = 'root';
MariaDB [mysql]> flush privileges;
--> 원상복구
위와 같이 처리하면 원격에서 접속이 가능하다.