티스토리 뷰
MariaDB(MySQL) 원격에서 접근이 가능하도록 설정하기
- 이 문서는 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입니다.
'프로그래밍언어 > MySQL or MariaDB' 카테고리의 다른 글
Install / Configuration / Run MySQL 5.6.x in CentOS7 On Docker (0) | 2017.02.21 |
---|---|
MariaDB(MySQL) DB Backup Dump Script (0) | 2017.01.10 |
[MYSQL] 계정 생성, 권한 부여, 제거, 비밀번호 변경 (0) | 2016.12.21 |
mysql group 사용하기 (0) | 2016.10.31 |
디비 생성하기 (0) | 2016.10.31 |
- Total
- Today
- Yesterday
- 워드프레스
- 가 부터 힣
- pk
- 소공
- 소프트웨어 공학
- javascript
- 리눅스
- flask-simpleldap
- headless browser
- mariadb
- backup
- NGINX
- MySQL
- 파이썬
- 무정지서비스배포
- ssh
- ELECTRON
- 소프트웨어 엔지니어링
- director.js
- graceful shutdown
- 채굴량
- centOS7
- php
- GROUP BY
- bash
- 자바스크립트
- select
- swapfile
- centOS
- Python
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |