MariaDB 사용자 목록 및 관리 방법: 사용자 계정 및 권한에 대한 완전 가이드

目次

1. Introduction

MariaDB는 사용 편의성과 높은 성능으로 오늘날 가장 널리 사용되는 데이터베이스 관리 시스템 중 하나입니다. 다양한 기능 중에서도 사용자 관리는 매우 중요한 역할을 합니다. 사용자를 적절히 관리함으로써 데이터베이스 보안을 확보하고 효율적인 운영을 달성할 수 있습니다.

이 문서는 MariaDB에서 사용자 목록을 확인하는 방법에 초점을 맞춥니다. 구체적으로 SQL 명령을 사용해 사용자 목록을 조회하는 방법, 각 방법의 차이점과 장점, 관련 권한 설정 및 주의해야 할 사항들을 설명합니다.

이 가이드는 MariaDB 초보자뿐만 아니라 현재 운영 환경을 관리하고 있는 분들에게도 도움이 되도록 작성되었습니다. 끝까지 꼼꼼히 읽어 보시기 바랍니다.

2. How to Check the User List in MariaDB

MariaDB에서 사용자 목록을 확인하는 방법은 여러 가지가 있습니다. 각 방법마다 특성이 다르며, 목적에 맞는 방법을 선택하면 효율적인 사용자 관리가 가능합니다. 아래에서는 대표적인 세 가지 방법을 자세히 설명합니다.

2.1 Using the mysql.user Table

MariaDB에서 사용자 정보를 확인하는 가장 기본적인 방법은 mysql.user 테이블을 직접 조회하는 것입니다. 이 테이블에는 모든 사용자 계정 정보가 저장되어 있습니다.

Example Command

다음 SQL을 실행하면 사용자 목록을 확인할 수 있습니다.

SELECT Host, User FROM mysql.user;

Explanation

  • Host : 사용자가 연결할 수 있는 호스트명을 나타냅니다.
  • User : MariaDB에 등록된 사용자 이름입니다.

Usage Scenarios

  • 모든 사용자를 목록 형태로 보고 싶을 때.
  • 특정 호스트에서 연결 가능한 사용자를 확인하고 싶을 때.

Important Notes

  • mysql.user 테이블을 조회하려면 충분한 권한(보통 root 권한)이 필요합니다.
  • 일부 버전에서는 mysql.user를 직접 사용하는 것이 권장되지 않을 수 있습니다. 사용 중인 버전의 공식 문서를 항상 확인하십시오.

2.2 Using the SHOW GRANTS Command

특정 사용자에게 부여된 권한을 확인하려면 SHOW GRANTS 명령을 사용할 수 있습니다.

Example Command

아래와 같이 사용자를 지정하면 해당 사용자의 권한을 표시합니다.

SHOW GRANTS FOR 'username'@'hostname';

Explanation

  • 각 사용자에 대한 상세 권한을 검토할 수 있습니다.
  • 예시 출력:
    GRANT ALL PRIVILEGES ON *.* TO 'user1'@'localhost';
    

Usage Scenarios

  • 사용자의 권한 설정이 올바른지 확인하고 싶을 때.
  • 잘못된 권한 구성으로 인한 문제를 해결하고 싶을 때.

Important Notes

  • 충분한 권한이 없으면 이 명령을 실행할 수 없습니다.

2.3 Using information_schema.USER_PRIVILEGES

MariaDB에는 information_schema라는 시스템 데이터베이스가 포함되어 있습니다. 이 안의 USER_PRIVILEGES 테이블을 조회하면 모든 사용자의 권한 정보를 표시할 수 있습니다.

Example Command

SELECT * FROM information_schema.USER_PRIVILEGES;

Explanation

  • 각 사용자의 전역 권한을 검토할 수 있는 방법입니다.
  • 출력에는 다음과 같은 정보가 포함됩니다.
  • GRANTEE : 사용자 이름과 호스트명.
  • PRIVILEGE_TYPE : 부여된 권한 종류.
  • IS_GRANTABLE : 해당 권한을 다른 사용자에게 부여할 수 있는지 여부.

Usage Scenarios

  • 여러 사용자의 권한을 한 번에 검토하고 싶을 때.
  • 전역 권한 설정을 감사하고 싶을 때.

Important Notes

  • 일부 권한은 이 테이블에 완전히 표시되지 않을 수 있습니다.

Summary

이러한 방법들을 적절히 활용하면 MariaDB 사용자 계정과 권한 정보를 효과적으로 관리할 수 있습니다. 각 접근 방식마다 장점이 있으므로, 구체적인 목표에 맞는 방법을 선택하는 것이 중요합니다.

3. Detailed Management of MariaDB Users

MariaDB는 상세한 사용자 정보를 검토하고 권한을 효율적으로 관리할 수 있도록 지원합니다. 이 섹션에서는 올바른 사용자 관리를 위해 필요한 핵심 작업들을 설명합니다.

3.1 Checking User Information

MariaDB에서 SHOW CREATE USER 명령어를 사용하여 특정 사용자에 대한 상세 정보를 확인할 수 있습니다. 이 명령어는 사용자가 생성될 때 사용된 문장을 재현합니다.

예제 명령어

다음 SQL을 실행하여 지정된 사용자의 상세 정보를 표시합니다:

SHOW CREATE USER 'username'@'hostname';

설명

이 명령어는 사용자의 인증 방법 및 기타 속성을 확인하는 데 사용됩니다. 예제 출력:

CREATE USER 'user1'@'localhost' IDENTIFIED VIA mysql_native_password USING '***';

사용 시나리오

  • 사용자의 인증 방법을 확인하고 싶을 때.
  • 잠재적 문제로 사용자 속성을 검토할 때.

중요 참고 사항

  • 이 명령어를 실행하려면 적절한 권한이 필요합니다 (일반적으로 root 권한).

3.2 사용자 권한 설정 및 수정

MariaDB는 각 사용자에 대한 유연한 권한 구성을 허용합니다. GRANTREVOKE 명령어를 사용하여 권한을 관리할 수 있습니다.

권한 부여

다음 SQL은 지정된 사용자에게 특정 권한을 부여합니다:

GRANT SELECT, INSERT ON database_name.* TO 'username'@'hostname';

권한 철회

불필요한 권한을 제거하려면 REVOKE 명령어를 사용합니다:

REVOKE INSERT ON database_name.* FROM 'username'@'hostname';

설명

  • GRANT 명령어는 특정 데이터베이스 또는 테이블에 대한 작업 권한을 할당합니다.
  • REVOKE 명령어는 더 이상 필요하지 않은 권한을 제거합니다.

사용 시나리오

  • 새 사용자에 대한 권한 구성 시.
  • 보안을 강화하기 위해 불필요한 권한 제거 시.

중요 참고 사항

  • 잘못된 권한 구성은 보안 위험을 증가시킬 수 있으므로 주의해서 조작하십시오.

3.3 사용자 삭제

불필요한 사용자를 제거하면 데이터베이스 보안이 강화됩니다. DROP USER 명령어를 사용하여 사용자를 삭제하십시오.

예제 명령어

다음 SQL을 실행하여 지정된 사용자를 삭제합니다:

DROP USER 'username'@'hostname';

설명

  • 사용자가 삭제되면 해당 사용자에게 부여된 모든 권한이 동시에 제거됩니다.
  • 성공 시 MariaDB는 “Query OK” 메시지를 표시합니다.

사용 시나리오

  • 데이터베이스에서 불필요한 사용자를 영구적으로 제거할 때.
  • 보안 목적으로 사용되지 않는 계정을 정리할 때.

중요 참고 사항

  • 사용자가 현재 연결된 상태라면 의도하지 않은 오류가 발생할 수 있습니다.
  • 사용자 삭제는 되돌릴 수 없으므로 실행 전에 주의 깊게 확인하십시오.

요약

MariaDB에서 적절한 사용자 관리는 보안과 운영 효율성을 모두 향상시키는 데 필수적입니다. 사용자 정보를 검토하고, 권한을 구성 및 수정하며, 불필요한 사용자를 삭제함으로써 안전하고 효율적인 데이터베이스 환경을 유지할 수 있습니다.

4. MariaDB 사용자 관리의 주요 고려 사항

MariaDB 사용자를 적절히 관리하려면 여러 중요한 점에 주의해야 합니다. 이 섹션에서는 권한 부족 처리 방법, 주요 보안 고려 사항, 버전 간 차이점을 설명합니다.

4.1 권한 부족 처리 방법

MariaDB에서 사용자 목록이나 권한을 확인하려면 충분한 권한이 필요합니다. 권한 부족으로 작업이 실패할 경우 다음 접근 방식을 시도할 수 있습니다.

예제 오류

다음과 같은 오류가 발생할 수 있습니다:

ERROR 1045 (28000): Access denied for user 'user1'@'localhost'

수정 방법

  1. 올바른 사용자로 로그인했는지 확인
  • 필요한 권한(예: SELECT 권한)이 누락된 경우 mysql.user 테이블을 쿼리할 수 없을 수 있습니다.
  • 대안으로 root 사용자 로그인을 시도하고 작업을 반복하십시오.
  1. root 사용자 로그인을 수행
  • root로 로그인하면 대부분의 관리 작업이 가능합니다: bash mysql -u root -p
  1. 권한 재구성
  • 필요 시 필요한 권한을 부여하십시오: sql GRANT ALL PRIVILEGES ON *.* TO 'username'@'hostname'; FLUSH PRIVILEGES;

중요 사항

  • 필요한 것보다 더 많은 권한을 부여하지 마세요. 과도한 권한은 보안 위험을 증가시킵니다.

4.2 보안 모범 사례

MariaDB 사용자 관리에서 보안은 최우선이어야 합니다. 다음은 기억해야 할 핵심 포인트입니다.

사용되지 않는 사용자 제거

  • 사용되지 않는 사용자 계정은 공격자에게 잠재적인 표적이 될 수 있습니다.
  • 정기적으로 사용자를 검토하고 불필요한 계정을 제거하세요:
    DROP USER 'username'@'hostname';
    

강력한 비밀번호 정책 사용

  • 사용자를 생성할 때 추측하기 어려운 비밀번호를 설정하세요:
    CREATE USER 'user1'@'localhost' IDENTIFIED BY 'StrongPassword123!';
    

외부 접근 제한

  • 불필요한 외부 접근을 방지하기 위해 연결 가능한 호스트를 제한하세요:
    CREATE USER 'user1'@'192.168.0.1' IDENTIFIED BY 'password';
    

로그 모니터링

  • 정기적으로 MariaDB 로그(예: general_logerror_log)를 검토하여 의심스러운 접근을 감지하세요.

4.3 MariaDB 버전별 차이점

MariaDB 동작 및 권장 관행은 버전에 따라 다를 수 있으므로 이에 맞게 접근 방식을 조정해야 합니다.

직접 mysql.user 접근 폐지

  • 최신 버전에서는 mysql.user 테이블을 직접 조회하는 것이 권장되지 않을 수 있습니다. 이 경우 SHOW GRANTS 또는 information_schema를 사용하세요.

인증 플러그인

  • 버전에 따라 기본 인증 플러그인이 다를 수 있습니다. 오래된 버전에서는 일반적으로 mysql_native_password를 사용하고, 최신 버전에서는 caching_sha2_password와 같은 더 안전한 옵션을 권장합니다.

권장 단계

  • MariaDB 버전을 확인하세요:
    SELECT VERSION();
    
  • 해당 버전의 공식 문서를 참고하고 최신 모범 사례를 따르세요.

요약

MariaDB 사용자 관리에 대한 이러한 핵심 고려 사항을 이해하면 보안을 강화하고 운영 효율성을 높일 수 있습니다. 권한 문제와 버전별 차이에 주의하고 최신 보안 조치를 적용하세요.

5. FAQ (자주 묻는 질문)

아래는 MariaDB 사용자 관리와 관련된 일반적인 질문과 답변입니다. 이 섹션에서는 권한 구성, 오류 처리 및 관리자가 자주 겪는 root 사용자 문제를 다룹니다.

Q1: 특정 사용자에게만 권한을 부여하려면 어떻게 해야 하나요?

답변

GRANT 명령을 사용하여 특정 사용자에게 필요한 권한만 부여할 수 있습니다. 아래는 특정 데이터베이스에 SELECTINSERT 권한을 부여하는 예시입니다:

GRANT SELECT, INSERT ON database_name.* TO 'username'@'hostname';
FLUSH PRIVILEGES;

핵심 포인트

  • database_name.*을 지정하면 해당 데이터베이스의 모든 테이블에 권한이 적용됩니다.
  • 변경 사항을 적용하려면 FLUSH PRIVILEGES;를 실행하세요.

Q2: 사용자 목록이 표시되지 않을 때 원인과 해결 방법은 무엇인가요?

답변

사용자 목록을 볼 수 없는 경우 일반적인 원인은 다음과 같습니다.

  1. 권한 부족
  • 필요한 권한(예: SELECT 권한)이 없으면 mysql.user 테이블을 조회할 수 없습니다.
  • 해결 방법으로 root 사용자로 로그인한 뒤 작업을 다시 시도해 보세요.
  1. 올바른 명령 사용
  • 최신 MariaDB 버전에서는 mysql.user 사용이 권장되지 않을 수 있습니다. 이 경우 다음 명령을 사용하세요: SELECT User, Host FROM information_schema.USER_PRIVILEGES;
  1. MariaDB 버전 확인
  • 권장 방법은 버전에 따라 다를 수 있으므로 먼저 현재 버전을 확인하세요: SELECT VERSION();

Q3: root 사용자가 잠겨 있으면 어떻게 해야 하나요?

답변

root 사용자가 잠겨 로그인할 수 없는 경우 다음 단계를 따르세요.

  1. 안전 모드로 MariaDB 시작
  • 서버를 중지하고 안전 모드로 재시작합니다: bash mysqld_safe --skip-grant-tables &
  1. root 비밀번호 재설정
  • 안전 모드에서 MariaDB에 로그인한 후 다음 명령을 사용하여 root 비밀번호를 재설정합니다: UPDATE mysql.user SET Password=PASSWORD('new_password') WHERE User='root'; FLUSH PRIVILEGES;
  1. 안전 모드 종료 및 정상 모드 재시작
  • MariaDB를 재시작하고 정상 운영으로 돌아갑니다.

Important Notes

안전 모드에서는 인증이 우회되므로, 이 기간 동안 제3자가 서버에 접근하지 못하도록 하세요.

Q4: 사용자를 삭제할 때 오류가 발생했습니다. 어떻게 해야 하나요?

Answer

사용자를 삭제할 때 오류가 발생한다면, 다음과 같은 문제가 흔한 원인입니다.

  1. 삭제하려는 사용자가 현재 사용 중인 경우
  • 사용자가 현재 연결되어 있으면 삭제가 실패할 수 있습니다.
  • 해결 방법으로는 사용자의 연결을 강제로 종료합니다: SHOW PROCESSLIST; KILL connection_id;
  1. 종속 객체가 존재하는 경우
  • 사용자와 연관된 객체(예: 뷰 또는 저장 프로시저)가 있으면 먼저 해당 객체들을 제거해야 할 수 있습니다.

Q5: SHOW GRANTS 출력 결과를 저장하려면 어떻게 해야 하나요?

Answer

SHOW GRANTS 출력 결과를 파일에 저장하여 나중에 검토할 수 있습니다.

  1. 파일에 저장
  • 명령줄에서 mysql 클라이언트를 사용하고 출력을 리다이렉트합니다: bash mysql -u root -p -e "SHOW GRANTS FOR 'username'@'hostname';" > grants_output.txt
  1. SQL 문으로 저장
  • 출력 결과를 텍스트 파일에 저장해 두면 나중에 재사용할 수 있습니다.

Summary

이 FAQ 섹션에서는 MariaDB 사용자 관리 시 자주 발생하는 질문들을 다루었습니다. 이 답변들을 활용해 문제를 해결하고 운영 효율성을 높이세요.