MariaDB 사용자 계정의 외부 접속 허용하기

By | 2024-01-22

바로 앞의 포스트에서 MariaDB와 MySQL 설치 시 외부 접속 허용을 위해 DB서버가 TCP 포트를 바인드하도록 설정하는 방법을 설명했다. 이번엔 DB서버가 바인드 한 포트를 통해 MariaDB와 MySQL의 사용자 계정에게 외부에서의 접속 권한을 부여하는 방법에 대해 포스팅한다.

즉 외부에서 MariaDB나 MySQL에 접속되지 않을 때 원인은 대부분 두세 가지로 압축된다. DB서버 데몬이 외부 접속을 허용하기 위해 TCP 포트를 바인드하지 않고 있거나 바인드하고 있다 하더라도 DB사용자 계정에게 접속 권한이 없는 경우 그리고 비밀번호가 틀린 경우다. 그 외에도 네트워크 방화벽에서 DB서버가 바인드하고 리슨(Listen)하고 있는 포트가 차단되어 있거나 서버의 Iptable에서 차단하고 있을 수도 있다.

MariaDB에 관리자 권한으로 접속하기

일단 MariaDB의 기본 관리자 계정인 root를 포함하여 특정 사용자 계정에게 외부에서의 접속을 허용하려면 mysql 이라는 명령어를 통해 MariaDB의 데몬에 관리자 계정(기본으로는 root)으로 접속해야 한다.

$ mysql -u root -p

수퍼유저 계정인 관리자 계정(root)으로 접속하면 위 화면과 같이 MariaDB > 프롬프트가 보인다. (MySQL 이면 MySQL > 프롬프트)

데이터베이스 생성

관리자 계정인 root 계정은 가능하다면 기본 설정을 변경하지 않고 외부 접속을 허용하지 않는 것이 강력하게 권장된다. 그리고 관리자 외 응용프로그램, 예를 들면 워드프레스 같은 응용프로그램에서 사용하지 않는 것을 강력하게 권장한다.

그래서 응용프로그램 또는 외부에서 접속해 사용할 데이터베이스를 새로 생성하고 외부 접속 용 계정을 생성하여 새로 생성한 데이터베이스에만 접근권한을 부여하는 방법으로 보안을 강화하는 것이 좋다.

먼저 다음과 같이 현재 생성되어 있는 데이터베이스를 확인하고 중복되지 않은 이름으로 새로운 데이터베이스를 생성한다.

MariaDB > show databases;
MariaDB > create database [생성할 DB이름];

에러 없이 1 row affected 라는 메시지가 출력되면 정상적으로 데이터베이스가 생성된 것이다. 확인하고 싶다면 show databases; 명령을 실행하여 확인할 수 있다.

새로운 MariaDB 계정 생성 및 데이터베이스 접근권한 부여

데이터베이스를 생성했다면 생성한 데이터베이스에 한정된 접근권한을 가진 MariaDB의 사용자 계정을 생성해야 한다.

create user '계정명'@'%' identified by '비밀번호';
grant all privileges on 생성한DB명.* to '계정명'@'%';

create user 문에서는 계정명(ID)와 비밀번호를 생성한다. 계정명 뒤의 @ 다음에 오는 %는 외부의 모든 IP를 의미한다. 즉 어느 IP에서든 taeho라는 계정으로 접근할 수 있다는 의미다. 단, identified by 다음에 오는 비밀번호로 인증을 받아야 한다.

그리고 Grant 문에서는 앞에서 생성한 데이터베이스(wp_statistics DB)에 한정된 모든 객체에 접근할 수 있는 권한(*)을 taeho@% 계정에게 부여한다는 의미다.

이 두 명령은 0 rows affected 라는 메시지를 리턴하면 정상적으로 실행된 것이다.

생성된 계정과 접근가능한 IP는 다음의 명령으로 확인할 수 있다.

MariaDB > select host, user from mysql.user;
Mariadb Account Ext Allow 04

정상적으로 계정을 생성하고 권한을 부여했다면 실제 적용되도록 다음의 명령을 실행해야 한다.

MariaDB > flush privileges;

외부에서 DBeaver로 MariaDB에 접속하기

DB를 생성하고 외부에서 접속할 수 있도록 계정을 생성하여 DB에 접근권한을 부여했다면 다음과 같이 외부의 컴퓨터에서 DB 접속도구에 접속하고자 하는 DB의 정보를 등록하여 접속할 수 있다.

DBeaver 에서 DB 접속 정보 등록하기

이 화면은 Windows PC에 설치하여 DB 접속에 사용할 수 있는 DBeaver 라는 편리한 도구다. 이 도구에 DB서버의 IP 정보(Server Host)와 Port 번호 그리고 접속하고자 하는 데이터베이스(Database) 그리고 접속 시 인증을 위한 DBMS의 사용자 계정 (username) 그리고 비밀번호(Password)를 등록하면 쉽게 접속할 수 있다.

접속에 성공하면 다음과 같이 해당 DB에 존재하는 객체들이 보이게 된다.

위 화면에서는 아직 wp_statistics DB에 아무런 객체도 만들지 않았기에 접속만 되고 실제로 조회되는 객체는 없다.

MariaDB 10.5에서 계정의 비밀번호 변경하기

그런데 간혹 계정을 생성한 다음 비밀번호를 분실하는경우가 있다.

비밀번호를 초기화하는 방법은 매우 많다. 그리고 DBMS의 버전에 따라 다르기도 하다. 이에 여기에서는 MariaDB 10.5에서 사용할 수 있는 사용자 계정의 비밀번호 변경방법을 소개한다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다