DB 암호화, 관리자 계정 접근, 데이터베이스 백업

2025. 5. 17. 12:42·DB

 

데이터베이스에서 지원하는 암호화 기능

암호화의 필요성

기밀성을 보장하려면 데이터가 외부에 노출되지 않도록 해야 한다. 그러나 완벽한 보안은 현실적으로 어려운 부분이기 때문에, 노출이 되더라도 문제가 없도록 데이터를 암호화하는 방법을 사용한다.


1. 단방향 암호화 (Hashing)

단방향 암호화는 복호화가 불가능한 암호화 방식이다. 주로 비밀번호와 같은 민감한 정보를 저장할 때 사용된다. 대표적으로 MD5, SHA-1, PASSWORD() 함수 등을 사용한다.

하지만 MD5와 SHA1은 충돌문제가 밝혀져 안 쓰고 현재는 SHA-256을 쓰고 있다.

select sha2('hello',0);


0은 256의미 그냥 256 쳐도 되고 256,384,512중에 고를 수 있음


 

  • MD5 암호화
  • MD5('데이터');
  • SHA-1 암호화
  • SHA1('데이터');
  • PASSWORD() 암호화
  • PASSWORD('데이터');

이 방식은 데이터를 암호화한 후 그 값을 저장하고 비교할 때 사용된다. 복호화가 불가능하기 때문에 원본 데이터는 알 수 없다.

예시

 


2. 양방향 암호화

양방향 암호화는 데이터를 암호화하고 복호화할 수 있는 방식이다. 주로 AES (Advanced Encryption Standard) 방식으로 데이터를 암호화하고, 필요할 때 원본 데이터를 복원할 수 있다.

암호화 예시

AES_ENCRYPT('원본데이터', '키값');

16진수로 변환 예시

HEX('데이터');  -- 데이터를 16진수로 변환
HEX(AES_ENCRYPT('원본데이터', '키값'));

복호화 예시

AES_DECRYPT('암호화된 데이터', '키값');

16진수 복호화 예시

UNHEX('데이터');  -- 16진수로 인코딩된 데이터를 복원
AES_DECRYPT(UNHEX('암호화된 데이터'), '키값');

양방향 암호화는 중요한 정보나 설정값을 안전하게 저장하고 필요할 때 복원하는 데 유용하다.


관리자 계정 접근

MariaDB는 사용자 편의성을 위해 기본적으로 관리자 계정에 패스워드 없이 로그인할 수 있는 기능을 제공하지만, 보안상 취약하기 때문에 이를 수정해야 한다.

패스워드 없이 로그인 설정 삭제

패스워드 없이 로그인하는 기능을 비활성화하려면 아래와 같은 명령어를 사용한다:

ALTER USER 'root'@'localhost' IDENTIFIED VIA mysql_native_password USING PASSWORD('패스워드');
FLUSH PRIVILEGES;

이 명령어는 root 계정에 패스워드를 설정하여, 패스워드 없이 로그인하는 기능을 막는다.

다시 패스워드 없이 로그인 성공 설정

다시 패스워드 없이 로그인을 허용하려면 아래와 같이 설정한다:

ALTER USER 'root'@'localhost' IDENTIFIED VIA unix_socket;
FLUSH PRIVILEGES;

이렇게 하면 unix_socket 인증 방식으로 로그인할 수 있게 되어, 시스템에 로그인된 사용자만 데이터베이스에 접속할 수 있다.


데이터베이스 백업

데이터베이스 백업은 시스템 장애나 데이터 손실을 방지하고, 고가용성을 보장하는 중요한 작업이다. 일반적으로 핫 백업과 콜드 백업 방식이 사용된다.


1. 핫 백업 (Hot Backup)

핫 백업은 실시간 백업으로, 데이터베이스가 구동 중일 때 백업을 진행하는 방식이다. 시스템을 멈추지 않고 백업할 수 있기 때문에 가용성을 유지할 수 있다. 하지만 백업 중 데이터 변화로 인해 문제가 발생할 수 있어 백업이 복잡하고 장애 발생 가능성이 높다.

2. 콜드 백업 (Cold Backup)

콜드 백업은 시스템을 정지한 후 백업하는 방식이다. 시스템을 정지하고 특정 시점에서 데이터를 백업하기 때문에 백업이 간단하고 정확하다. 그러나 시스템의 가용성을 포기해야 하며, 중간에 발생한 데이터 변화는 복구할 수 없다.


mysqldump (백업 및 복구 도구)

mysqldump는 MySQL과 MariaDB에서 제공하는 기본 백업 및 복구 도구이다. mysqldump를 사용하여 특정 데이터베이스나 테이블을 백업하거나 복구할 수 있다.

 

mysqldump= 논리 백업 (Logical Backup): 데이터베이스를 실행 중인 상태에서 SQL 문을 이용해 데이터를 추출하는 방식

전체 데이터베이스 백업

전체 DB를 백업하려면 아래 명령어를 사용한다:

mysqldump -u root -p --all-databases > maria1.sql

특정 DB 백업 (복수 DB)

복수의 데이터베이스를 백업하려면 아래와 같이 사용한다:

mysqldump -u root -p --databases DB명1 DB명2 > mariadb2.sql

특정 DB 백업 (단일 DB)

단일 데이터베이스만 백업하려면 아래 명령어를 사용한다:

둘 다 가능

mysqldump -u root -p DB명 > mariadb3.sql

특정 테이블 백업

특정 테이블만 백업하려면 아래와 같이 명령어를 사용한다:

mysqldump -u root -p DB명 테이블명 > mariadb4.sql

특정 데이터 검색 백업 (조건 매칭)

특정 조건에 맞는 데이터만 백업하려면 -w 옵션을 사용한다:

mysqldump -u root -p DB명 테이블명 -w 컬럼명='조건값' > mariadb5.sql

데이터 미포함 백업

데이터는 제외하고, 테이블 구조만 백업하려면 --no-data 옵션을 사용한다:

mysqldump -u root -p --no-data DB명 > mariadb6.sql

 

저작자표시 비영리 변경금지 (새창열림)

'DB' 카테고리의 다른 글

view  (0) 2025.05.26
저장 함수 (Stored Function), 트리거 (Trigger),MariaDB 접속 (로그인)  (0) 2025.05.16
procedure (저장 프로시저)  (1) 2025.05.15
DCL - grant, revoke +commit, rollback(transaction)  (0) 2025.05.13
변수  (0) 2025.05.12
'DB' 카테고리의 다른 글
  • view
  • 저장 함수 (Stored Function), 트리거 (Trigger),MariaDB 접속 (로그인)
  • procedure (저장 프로시저)
  • DCL - grant, revoke +commit, rollback(transaction)
햅삐root
햅삐root
happyroot 님의 블로그 입니다. IT 보안 정리💛
  • 햅삐root
    햅삐한 root
    햅삐root
  • 전체
    오늘
    어제
    • 전체보기 IT (123)
      • Linux (21)
      • Network (23)
      • packet tracer& GNS3 (10)
      • Cryptology (7)
      • WEB (16)
      • DB (16)
      • Hacking (28)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    injectionvector
    sqlinjection
    Hack
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
햅삐root
DB 암호화, 관리자 계정 접근, 데이터베이스 백업
상단으로

티스토리툴바