- 이 문서는 2016-12-21에 작성되었습니다.
- 이 문서의 MariaDB는 mysql Ver 15.1 Distrib 5.5.50-MariaDB, for Linux (x86_64) using readline 5.1 입니다.
- 이 문서의 Centos7은 3.10.0-327.36.3.el7.x86_64 #1 SMP Mon Oct 24 16:09:20 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux 입니다.
MariaDB 패키지는 기본적으로 127.0.0.1 만 접근하도록 허용합니다. 보안상의 이유때문인데 예전 MySQL 에서는 skip-networking 지시어를 해제(주석처리) 해서 네트워크 단에서 접근이 가능하도록 할 수 있었습니다. MariaDB 에서는 두가지 요소가 원격 접근에 관여합니다.
- skip-networking 이 지시가 활성화 되면, 오로지 sock 파일로만 통신을 합니다.
- bind-address 는 데몬에 접근을 할 수 있는 IP 대역대를 지시합니다.
설정 파일 찾기
데몬의 설정 파일을 찾아 위에 언급했던 두가지 요소 중, skip-networking 을 해제하고 bind-address 에 전체 IP에서 접근하도록 허용하도록 해야합니다.
공식 문서에서는 bind-address 를 주석 처리하라고 하였는데, 제가 테스트 해본 결과는 bind-address 가 해제되어 있으면, 원격 접근을 거부합니다.
그럼 설정 파일의 위치는 보통 /etc/my.cnf 이지만, 아닐 수도 있고, 위치를 모를 수도 있습니다. 다음과 같은 명령으로 찾아보도록하죠.
[]# find / -name my.cnf /etc/my.cnf
그러면 vim 또는 vi 등 본인에게 익숙한 편집기로 파일을 엽니다.
[]# vim /etc/my.cnf ------vim영역------- ... [mysqld] ... #skip-networking ... bind-address=0.0.0.0
위와 같이 적용하고 저장합니다.
데몬을 재시작하죠.
CentOS 7:
[]# systemctl restart mariadb
CentOS 6-:
[]# service mariadb restart
원격 호스트에서 접근이 가능하도록 사용자 권한 부여하기
MariaDB(MySQL) 은 데몬에서 뿐만 아니라 사용자 권한으로 접근을 제어할 수 있습니다.
그래서 접근이 가능하도록 권한을 특정 사용자에게 부여하도록 합시다.
우선 DBMS에 접근해 보겠습니다.:
[]# mysql -u root -p input password: ******** Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 36 Server version: 5.5.28-MariaDB-mariadb1~lucid mariadb.org binary distribution Copyright (c) 2000, 2012, Oracle, Monty Program Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]>
localhost 가 아닌 사용자를 찾아 보죠.
MariaDB [(none)]> SELECT User, Host FROM mysql.user WHERE Host <> 'localhost'; +--------+-----------+ | User | Host | +--------+-----------+ | daniel | % | | root | 127.0.0.1 | | root | ::1 | | root | gandalf | +--------+-----------+ 4 rows in set (0.00 sec)
그러면 root 사용자를 192.168.0.* 대의 IP에서 접근이 가능하도록 권한을 부여해 보겠습니다.
MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.0.%' IDENTIFIED BY 'my-new-password' WITH GRANT OPTION; MariaDB [(none)]> FLUSH PRIVILEGES;
my-new-password 는 비밀번호를 설정하는 부분입니다. 만일 기존의 비밀번호를 그대로 사용하고 싶으시면, IDENTIFIED BY 'my-new-password 를 생략하세요.
방화벽 열기
위에 내용대로 하셨으면, MariaDB 는 준비가 되었습니다. 하지만 OS 단에서는 또 한번의 보안장벽이 있죠. 방화벽인데, 이 방화벽에게 MariaDB 의 포트를 열어 달라고 요청해 보겠습니다. :
CentOS7:
[]# firewall-cmd --add-port=3306/tcp []# firewall-cmd --permanet --add-port=3306/tcp []# firewall-cmd --reload
CentOS6:
[]#
이렇게 하셨으면 전부 끝났습니다. 그럼 원격지에서 접근이 되는지 확인하는 법은 다음과 같습니다:
[]# mysql -h [MariaDB IP주소] -u [사용자ID] -p
비밀번호를 입력 하신 후 접속이 되면 잘 되는거겠죠?
주의할 점은, 원격지의 주소가 NAT 인 경우 해당 주소를 bind-address 에 부여하면 안된다는 것입니다. 실제적으로 MariaDB 에 접근하려는 IP를 bind 하셔야 합니다.
그리고 기본적으로 MariaDB(MySQL)의 포트는 3306입니다.
출처: http://gafani.tistory.com/entry/MariaDBMySQL-원격에서-접근이-가능하도록-설정하기 [Sanctuary]
현재 나의 카페24 에서 원격 접속은 다음과 같이 하였다.
현재 나의 ip 는 다음과 같다. 175.112.156.44
1. GRANT ALL PRIVILEGES ON *.* TO 'root'@'175.112.156.44' IDENTIFIED BY 'my-new-password' WITH GRANT OPTION;
2. FLUSH PRIVILEGES;
3. create user `ateama`@`175.112.156.44` identified by '12341234';
4. create database ateama character set=utf8;
5. grant all privileges on ateama.* to `ateama`@`175.112.156.44` ;
댓글 ( 6)
댓글 남기기