보안이 생명인 데이터베이스는 외부에서 접속하는걸 쉽게 허락하지 않는다.
SSH 나 Telnet, FTP 등은 목표 서버 IP, User, Password 로 접속 할 수 있지만 (설정에 따라 다르게 할 수 있다.)
데이터베이스에 접속 할 때는 'IP 화이트리스트'를 추가로 적용한다.
즉, user/password 검증 뿐 아니라 접속자의 IP 주소까지 따진다는 의미.
예를 들어 192.168.111.131 컴퓨터에서 192.168.111.100 데이터베이스 서버에 myadmin 라는 계정으로
데이터베이스에 접속하려면?
192.168.111.100 데이터베이스 서버에 myadmin@192.168.111.131 라는 유저가 있어야 한다.
개념은 이정도로 해두고 직접 해본다.
MariaDB-client 설치하기
client 는 대부분 윈도우일 것이다. (물론 아니어도 문제 없다.)
아래 링크에서 mariadb를 다운로드 받는다.
https://downloads.mariadb.org/mariadb
여기서, 접속할 서버의 버전과 같은 client 를 설치해야한다.
서버 버전을 확인해보고 적절한 버전을 다운로드 받는다.
(필자 서버는 10.5.10 버전이다.)
인스톨러를 실행시키고 Next 를 누르다보면 변경해야 할 점이 생긴다.
Client Programs 말고 나머지는 모두 설치 하지 않도록 한다.
이미 서버는 있으므로 로컬에 또 서버를 설치할 필요는 없기 때문이다.
하나만 남겨두고 나머지는 다 꺼버리자.
MariaDB 서버 설정
앞서 언급했듯이사용자 검증 뿐만 아니라 IP 검증도 함께 한다.
따라서 새로운 유저를 GRANT 할 때 IP 주소도 지정해야한다.
mariadb 가 설치된 서버에서, 아래 쿼리문을 적절히 변경하여 입력한다.
GRANT ALL ON *.* TO username@'myipaddress' IDENTIFIED BY 'p@ssw0rd';
ALL | 어떤 DML 명령을 허용하겠는가? SELECT, INSERT, UPDATE 등의 명령이 있다. ALL 을 하는 경우 모든 명령을 사용 할 수 있다. |
*.* | 어떤 데이터베이스의 어떤 테이블을 허용하겠는가? 예를 들어 'mydb.mytb' 를 입력하는 경우 mydb 라는 데이터베이스의 mytb 라는 테이블만 조작 할 수 있도록 허용한다. *.* 는 모든 테이블과 데이터베이스를 다룰 수 있다. |
username | 어떤 사용자명을 사용하겠는가? |
myipaddress | 어떤 IP Address 로 부터 접속하는 유저를 허용하겠는가? '%' 를 입력하면 모든 IP 주소로부터 오는 접속을 허용한다. |
p@ssw0rd | 해당 사용자의 비밀번호는 무엇인가? |
예를 들어, ballbot 라는 유저가 knubot 라는 데이터베이스의 모든 테이블을 관리하게 하되, 192.168.111.* 에서 접속 할 수 있도록 허용하려면?
GRANT ALL ON knubot.* TO ballbot@'192.168.111.%' IDENTIFIED BY 'p@ssw0rd';
이렇게 쿼리를 구성하면 되겠다.
Windows 에서 원격으로 접속
설치를 마치고 컴퓨터를 보면, 저 프로그램이 있다.
저 친구로 명령프롬프트를 열면 mysql.exe 파일을 찾으러 컴퓨터를 투어하지 않아도 된다.
mysql -h mariadb-server-address -u username -p p@ssw0rd
위 명령어를 적절히 수정하여 원격으로 접속한다.
외부에서 성공적으로 접속했다.
ballbot 이라는 유저는 knubot 이라는 데이터베이스만을 관리 할 수 있게 했으므로
knubot 이라는 테이블만 해당 유저에게 보이는것을 확인 할 수 있다.
'볼봇의 코딩 생활 > Linux' 카테고리의 다른 글
CentOS 8 java 최신 버전 설치 (java-16) (0) | 2021.07.01 |
---|---|
Certbot 으로 웹 사이트에 https 적용하기 (0) | 2021.06.30 |
Centos 8 에 MariaDB 설치하기 (0) | 2021.06.12 |