데이터베이스/용어정리

User 와 Users 이해.

Blue_bull 2025. 1. 16. 21:59

1. 사용자(User)의 공식적인 정의

  • 사용자(User)는 데이터베이스와 상호작용하는 주체(계정)를 나타내며, 대부분의 RDBMS(Relational Database Management System)에서 표준적으로 사용되는 개념이다.
  • 사용자(User)데이터베이스 내에서 인증(로그인)되고 데이터베이스 자원에 접근할 수 있는 계정을 말한다.
  • 사용자는 데이터베이스의 객체(테이블, 뷰, 인덱스 등)를 생성하거나 사용하며, 특정 권한을 부여받아 작업을 수행할 수 있다.

2. 사용자(User)의 공식적인 위치

Oracle 데이터베이스

  • Oracle에서 사용자(User)스키마(Schema)의 소유자로 정의된다.
  • 사용자 계정은 다음과 같은 작업을 수행할 수 있다:
    • 데이터베이스에 접속.
    • 테이블, 뷰, 프로시저 등 객체 생성.
    • 다른 사용자의 객체에 접근(필요한 권한이 있는 경우).

다른 RDBMS에서의 사용자

  • Oracle:

    • 사용자는 데이터베이스의 개별 계정으로, 스키마를 소유하고 데이터베이스 객체를 관리한다.
    • 예:
      CREATE USER username IDENTIFIED BY password;
      GRANT CONNECT, RESOURCE TO username;
  • MySQL:

    • 사용자 계정은 데이터베이스 연결 및 권한 부여를 통해 관리된다.
    • 예:
      CREATE USER 'username'@'host' IDENTIFIED BY 'password';
      GRANT SELECT, INSERT ON database_name.* TO 'username'@'host';
  • PostgreSQL:

    • PostgreSQL에서 사용자는 Role이라는 개념으로 관리되며, 데이터베이스 객체에 대한 권한을 설정한다.
    • 예:
      CREATE ROLE username WITH LOGIN PASSWORD 'password';
      GRANT SELECT, INSERT ON ALL TABLES IN SCHEMA public TO username;
  • SQL Server:

    • SQL Server에서 사용자는 로그인(Login)데이터베이스 사용자(Database User)로 나뉘어 관리된다.
    • 예:
      CREATE LOGIN username WITH PASSWORD = 'password';
      CREATE USER username FOR LOGIN username;
      ALTER ROLE db_datareader ADD MEMBER username;

3. 사용자와 관련된 공식 용어

  • 권한(Privileges):
    • 사용자가 데이터베이스 내에서 수행할 수 있는 작업을 제어.
    • 예: SELECT, INSERT, UPDATE, CREATE, DROP 등.
  • 스키마(Schema):
    • 특정 사용자가 소유하는 데이터베이스 객체(테이블, 뷰 등)의 논리적 그룹.
  • 역할(Role):
    • 비슷한 작업을 수행하는 사용자들을 그룹화하여 권한을 부여할 수 있는 개념.

결론

  • 사용자(User)는 데이터베이스 관리에서 공식적인 용어이며, 모든 주요 RDBMS에서 표준적으로 사용된다.
  • 사용자는 데이터베이스와 상호작용하며, 권한과 데이터 접근을 제어하는 핵심적인 개념이다.

4. Oracle, MySQL, PostgreSQL에서 UserUsers의 개념

1. Oracle

  • User: 개별 사용자 계정을 의미하며, 현재 세션에서 로그인한 사용자 계정을 확인할 수 있다. 예를 들어, SELECT USER FROM dual; 명령어를 실행하면 현재 데이터베이스에 접속 중인 사용자 계정 이름이 반환된다.
  • Users:
    1. 일반 사용자 데이터를 저장하는 기본 테이블스페이스의 이름으로 사용된다(USERS).
    2. 데이터베이스에 존재하는 사용자 계정 목록을 확인할 때 SELECT username FROM dba_users;와 같은 명령어를 통해 조회할 수 있다.

2. MySQL

  • User: MySQL에서도 개별 사용자 계정을 지칭한다. 사용자 계정은 특정 데이터베이스에 접근하고 작업을 수행하기 위한 로그인 계정이다.
  • Users: 복수형 개념으로는 존재하지 않는다. 하지만 여러 사용자 계정에 대한 정보를 mysql.user 테이블에서 조회할 수 있다.

3. PostgreSQL

  • User: PostgreSQL에서는 개별 사용자를 Role이라는 개념으로 관리하며, 로그인 계정을 포함한다. 사용자는 데이터베이스에 로그인하고 특정 권한을 부여받아 작업을 수행한다.
  • Users: PostgreSQL에서도 복수형으로는 명시적으로 존재하지 않는다. 그러나 모든 사용자 및 역할(Role) 목록은 pg_roles 뷰를 통해 확인할 수 있다.

정리

  • User는 Oracle, MySQL, PostgreSQL 모두에서 개별 사용자 계정을 지칭한다.
  • Users는 Oracle에서 테이블스페이스 이름으로 사용되며, 사용자 계정 목록 조회에도 사용된다. 그러나 MySQL과 PostgreSQL에서는 복수형으로 명시적인 용도는 없으며, 사용자 목록은 각각의 데이터베이스 시스템이 제공하는 특정 테이블이나 뷰를 통해 조회할 수 있다.

Oracle에서의 의미 차이 표

개념 설명 예제 코드
USER 현재 세션의 사용자 계정을 반환. sql SELECT USER FROM dual;
USERS 테이블스페이스 일반 사용자 데이터를 저장하는 기본 테이블스페이스. sql CREATE USER john IDENTIFIED BY pass123 DEFAULT TABLESPACE users;
DBA_USERS 뷰 데이터베이스에 존재하는 모든 사용자 계정을 보여주는 데이터 사전 뷰. sql SELECT username FROM dba_users;