설치 전 준비
먼저 패키지 저장소를 업데이트합니다:
bash
sudo apt update sudo apt upgrade
MariaDB 설치
서버와 클라이언트를 모두 설치합니다:
bash
# MariaDB 서버 설치 sudo apt install mariadb-server # MariaDB 클라이언트 설치 sudo apt install mariadb-client
보안 설정
설치 후 계정 및 보안 설정 스크립트를 실행합니다:
bash
sudo mysql_secure_installation
이 스크립트에서는 다음 항목들을 설정합니다:
-
Switch to unix_socket authentication → n
-
Change the root password? → n (또는 원하는 경우 y)
-
Remove anonymous users? → y
-
Disallow root login remotely? → y
-
Remove test database and access to it? → y
-
Reload privilege tables now? → y
설치 확인 및 기본 명령어
MariaDB 버전을 확인하여 정상 설치되었는지 확인합니다:
bash
mariadb --version
MariaDB 서비스 관리 명령어:
bash
# MariaDB 활성화 systemctl enable mariadb # MariaDB 시작 systemctl start mariadb # MariaDB 상태 확인 systemctl status mariadb # MariaDB 재시작 sudo systemctl restart mariadb
접속 방법
다음 명령어로 MariaDB에 접속할 수 있습니다:
bash
sudo mysql -u root -p
또는 간단히:
bash
sudo mariadb
기본 데이터베이스 작업
접속 후 기본적인 데이터베이스 명령어는 다음과 같습니다:
-- 데이터베이스 목록 확인 SHOW DATABASES; -- 데이터베이스 생성 CREATE DATABASE 데이터베이스명; -- 데이터베이스 삭제 DROP DATABASE 데이터베이스명; -- 사용자 생성 (로컬 접속용) CREATE USER '사용자명'@'localhost' IDENTIFIED BY '비밀번호';
생성한 데이터베이스에 사용자를 지정하려면 GRANT 명령어를 사용하여 특정 사용자에게 해당 데이터베이스에 대한 권한을 부여해야 합니다.
기본 권한 부여 방법
특정 데이터베이스에 모든 권한을 부여하는 기본 형식입니다:
GRANT ALL PRIVILEGES ON 데이터베이스명.* TO '사용자명'@'접속위치';
FLUSH PRIVILEGES;
예시:
-- mydb 데이터베이스의 모든 테이블에 대한 모든 권한 부여
GRANT ALL PRIVILEGES ON mydb.* TO 'testuser'@'localhost';
FLUSH PRIVILEGES;
접속 위치 지정
사용자의 접속 위치에 따라 다르게 설정할 수 있습니다:
-- localhost에서만 접속 허용 GRANT ALL PRIVILEGES ON mydb.* TO 'user'@'localhost'; -- 모든 위치에서 접속 허용 GRANT ALL PRIVILEGES ON mydb.* TO 'user'@'%'; -- 특정 IP 대역에서만 접속 허용 GRANT ALL PRIVILEGES ON mydb.* TO 'user'@'192.168.0.%';
특정 권한만 부여
필요한 권한만 선택적으로 부여할 수 있습니다:
-- SELECT, INSERT, UPDATE 권한만 부여
GRANT SELECT, INSERT, UPDATE ON mydb.* TO 'user1'@'localhost';
-- 특정 테이블에만 권한 부여
GRANT SELECT, INSERT ON mydb.테이블명 TO 'user1'@'localhost';
-- 특정 컬럼에만 UPDATE 권한 부여
GRANT UPDATE(컬럼1, 컬럼2) ON mydb.테이블명 TO 'user1'@'localhost';
주요 권한 종류
MariaDB에서 사용할 수 있는 주요 권한들입니다:
-
SELECT: 데이터 조회
-
INSERT: 데이터 삽입
-
UPDATE: 데이터 수정
-
DELETE: 데이터 삭제
-
CREATE: 테이블/데이터베이스 생성
-
DROP: 테이블/데이터베이스 삭제
-
INDEX: 인덱스 생성/삭제
-
ALTER: 테이블 구조 변경
-
EXECUTE: 프로시저 실행
-
ALL PRIVILEGES: 모든 권한 (GRANT OPTION 제외)
권한 확인
부여한 권한을 확인하는 방법입니다:
-- 특정 사용자의 권한 확인 SHOW GRANTS FOR 'user1'@'localhost'; -- 현재 사용자의 권한 확인 SHOW GRANTS;
권한 회수
부여한 권한을 제거할 수 있습니다:
-- 모든 권한 회수 REVOKE ALL PRIVILEGES ON mydb.* FROM 'user1'@'localhost'; -- 특정 권한만 회수 REVOKE DELETE ON mydb.* FROM 'user1'@'localhost'; -- 변경사항 적용 FLUSH PRIVILEGES;