CentOS Maria DB 설치 HeidiSQL 외부 접속 및 사용자 계정 추가해보기~
리눅스 CentOS 7 버전에서 Maria DB를 설치하여 Heidi SQL 프로그램을 사용해 외부 접속 후 사용자 계정을 추가하여 데이터베이스와 테이블을 생성하여 권한을 주는 방법에 대해 정리해 보려고 합니다.
먼저 가상머신 프로그램인 VirtualBox에 CentOS 7 버전을 설치해야 합니다. 저는 dbgo라는 이름으로 리눅스를 설치하였습니다. 설치 방법은 이전에 작성한 https://zzarungna.com/1546 내용을 참고하시면 좋을 듯합니다.
리눅스 서버 최초 설치가 완료되었다면 커맨드 명령어를 사용해 maria db를 설치하시면 됩니다. 설치과정 중간에 나오는 내용에 모두 y를 누르고 엔터로 눌러 진행하시면 됩니다.
#mariadb와 mariadb-server 모두 설치~
yum install mariadb mariadb-server
MariaDB 설치 후 사용하기 위해 start 명령어를 사용해 시작해 주면 되며 서버 리부팅된 이후에도 자동으로 시작하게 하려고 enable mariadb 명령어를 적용 하시고 mysql에 접속해 주시면 됩니다. 설치 이후 초기 비번은 지정하지 않았으니 비번을 물어보는 화면에서 엔터를 입력하면 접속되게 됩니다.
systemctl start mariadb #마리아 디비 스타트
systemctl enable mariadb #서버 리부팅 이후에도 자동으로 시작 하기 위해서.
mysql -u root -p #mariadb 접속
DB 접속 후 관리자 계정이 외부 접속이 가능하도록 권한을 설정하시고 비번을 지정해 주시면 됩니다. 기존 root 계정에 비번은 12345로 지정 하였으며 권한 설정과 비번을 같이 설정하는 명령어 입니다.
grant all privileges on *.* to root@'%' identified by 'mypass';
초기 mariaDB 설치 후 root 계정의 user 테이블 grant_priv(자신의 권한을 남에게 부여할 수 있는 권한) 필드가 N으로 설정되어 있습니다. 이걸 Y로 변경해 주어야 DB 계정을 추가하고 추가한 계정의 권한도 부여할 수 있습니다.
use mysql; #mysql db 선택.
update user set grant_priv='Y' where host='%' and user='root';
flush privileges; #변경사항 즉시 반영
MariaDB 설치 후 관리자 계정이 외부에서 접속할 수 있도록 그리고 DB 접속 계정 추가나 권한도 부여 가능하도록 설정하였습니다. 마지막으로 MariaDB를 외부에서 접속 가능하도록 방화벽을 열어 주시면 됩니다.
firewall-cmd --add-service=mysql
firewall-cmd --add-service=mysql --permanent
리눅스 서버에 MariaDB를 설치하였으니 현재 서버가 사용하고 있는 ip 주소를 확인해야 외부에서 접속이 가능합니다.
ip addr show 명령어를 사용해 현재 서버가 사용하고 있는 아이피를 확인하시면 됩니다. 저는 192.168.56.108 아이피를 사용하고 있네요.
ip addr show
쿼리문을 사용해 데이터베이스, 테이블, 데이터 입력
가상 머신 리눅스 서버에서 MariaDB 설치와 외부에서 접속이 가능하도록 작업은 완료하였습니다. 그러니 이제 외부에서 실제로 접속이 되는지 테스트를 진행하려고 합니다. 먼저 https://www.heidisql.com/ 사이트에 접속하셔서 heidisql 프로그램을 설치해 주시면 됩니다. 저는 윈도우 환경의 인스톨러 프로그램을 다운받아 기본 설정된 상태로 설치해 주었습니다.
heidisql 프로그램 설치 후 실행하게 되면 아래 이미지와 같이 화면이 표시되게 됩니다. 시간이 지나 버전이 바뀌어 화면이 변경될 가능성은 있습니다.
네트워크 유형, Library IP는 방금 서버의 IP를 입력하고 열기를 누르시면 됩니다. 자격 증명 프롬프트에 체크하셨다면 root 계정을 입력하는 창이 추가로 표시 되니 아이디와 비밀번호를 다시 입력 하시면 접속되게 됩니다.
HeidSQL 프로그램을 사용해 데이터베이스 사용자 한 명을 추가 후 특정 테이블에 권한을 주기 위해 쿼리문을 사용해 데이터베이스를 하나 생성해 주었습니다. 실행 단축키는 Shift+Ctrl+F9 입니다.
CREATE DATABASE wellcome; /* 데이타 베이스 생성 */
쿼리문을 실행해 데이터베이스 생성하게 되면 왼쪽 메뉴에 추가한 데이타 베이스가 표시됩니다. 표시되지 않으신다면 F5 새로고침을 하시면 표시됩니다.
데이터베이스를 생성하고 인코딩 형식을 변경해야 한글이 깨지지 않으니 생성한 데이터베이스를 마우스 오른쪽 버튼으로 선택 하시고 편집 누르시면 됩니다.
편집을 누르게 되면 데이터베이스의 인코딩 형식을 변경하실 수 있습니다. 조합 메뉴에서 utf8_general_ci를 찾아서 선택하시고 확인 버튼을 누르시면 됩니다.
데이터베이스 생성 후 인코딩까지 맞춰 주었다면 이제 테이블을 만들어 주시면 됩니다. 쿼리문 작성 후 F9나 실행 버튼을 눌러 주시면 됩니다.
USE wellcome; /* 생성한 데이타베이스 선택 */
/* 멤버 테이블 생성 */
CREATE TABLE member(
NAME VARCHAR(20),
ID VARCHAR(20) PRIMARY KEY,
ADDRESS VARCHAR(50),
TEL VARCHAR(40)
);
생성한 테이블에 데이터를 넣어주시면 됩니다. 아래 쿼리문을 복사해서 실행하시면 됩니다.
/* 생성한 테이블에 데이터 넣기 */
INSERT INTO member(NAME, ID, ADDRESS, TEL) VALUES('홍길동','kildong','서울','없음');
INSERT INTO member(NAME, ID, ADDRESS, TEL) VALUES('아이유','iu','서울','010-1234-5678');
INSERT INTO member(NAME, ID, ADDRESS, TEL) VALUES('아무개','amuge','부산','010-1111-2222');
입력한 데이터를 확인해 보시려면 SELECT * FROM member; 쿼리문을 실행해 아래 실행 결과에서 데이터를 확인하시면 됩니다.
SELECT * FROM member;
HeidiSQL 데이터베이스 사용자 계정 추가
데이터베이스 사용자 계정을 heidiSQL 프로그램에서 추가하려면 사람 모양의 아이콘을 선택하시면 됩니다.
왼쪽 상단에 추가 메뉴 선택을 하시면 자격 증명 입력이 가능합니다. 사용자 이름은 iu로 지정하였으며 호스트는 윈도우 환경에서 cmd를 열어 윈도우 환경의 아이피를 확인하시면 됩니다.
그리고 암호를 넣고 암호 재입력까지 모두 입력하시고 객체 추가 버튼을 눌러 방금 생성한 데이터베이스를 선택하시고 확인을 누르시면 됩니다.
저는 집에서 공유기를 사용해 IPv4 주소가 192.168.0.15를 입력하니 SQL 오류 (1045): Access denied for user 'root'@'%' (using password: YES) 오류가 나더군요 위처럼 192.168.% 호스트에서 입력하니 정상 접속 되었습니다.
윈도우키 + R을 누르시고 cmd 입력 후 엔터를 누르시면 아래 이미지와 같이 커맨드창이 표시되며 ipconfig 명령어를 통해 사용하는 IP 확인이 가능하니 참고하시고 호스트에서 정보를 입력하시면 됩니다.
데이터베이스에 접속할 사용자 계정을 생성했으니 접속을 끊고 방금 생성한 아이디로 데이터베이스 접속이 되는지 확인하려고 합니다. 데이터베이스 연결해제 선택.
첫 화면으로 돌아오게 되면 자격 증명 프롬프트에 체크가 되어 있으면 됩니다. 이제 방금 생성한 iu라는 계정으로 로그인 시도.
iu 계정으로 접속 후 member 테이블에만 접근이 가능한 것을 확인했습니다.
서버에서 직접 MariaDB 사용자 계정 추가 후 권한 설정하기
UI 환경에서 데이터베이스 사용자 계정 추가까지 진행해 보았는데 마지막으로 리눅스 서버에서 직접 명령어를 통해 계정을 생성해 보려고 합니다.
MariaDB 접속 후 명령어를 사용해 iu와 같은 권한의 계정을 iuiu라는 아이디로 새로 생성하였습니다.
mysql -u root -p #비번입력 후 mariadb 접속
use mysql
grant all privileges on wellcome.member to 'iuiu'@'192.168.%' identified by '12345';
flush privileges;
계정 생성 후 heidiSQL 프로그램에 접속해서 확인해 보니 UI 모드에서 생성한 계정과 동일한 권한의 계정이 생성되었고 외부 접속도 잘됩니다. 서버에서 생성한 계정을 HeidiSQL 프로그램에서 확인한 이미지 입니다.
개인적으로 필요하다는 생각에 리눅스 서버에 MariaDB를 설치하고 외부 접속 및 계정 추가 권한 설정까지 정리해 보았습니다. 필요하신 분들에게 도움이 되었으면 좋겠습니다.