[sql] SQL 데이터베이스 로그인 이력 조회 방법

보안 관리를 위해 SQL 데이터베이스 로그인 이력을 확인하고 싶을 때가 있습니다. 다음은 SQL 데이터베이스에서 로그인 이력을 조회하는 방법입니다.

1. SQL Server (Transact-SQL)

SQL Server에서는 sys.dm_exec_sessions 시스템 뷰를 사용하여 로그인 이력을 조회할 수 있습니다. 다음은 해당 방법의 예시 코드입니다.

SELECT
    login_time,
    host_name,
    program_name
FROM
    sys.dm_exec_sessions
WHERE
    is_user_process = 1;

위의 코드는 SQL Server 데이터베이스에서 로그인한 사용자의 로그인 시간(login_time), 호스트 이름(host_name), 프로그램 이름(program_name)을 조회합니다. is_user_process = 1 조건은 사용자 프로세스만 조회하도록 필터링합니다.

2. MySQL

MySQL에서는 information_schema 접두사를 가진 테이블을 사용하여 로그인 이력을 조회할 수 있습니다. 다음은 해당 방법의 예시 코드입니다.

SELECT
    user,
    host,
    time
FROM
    information_schema.processlist
WHERE
    command = 'Connect';

위의 코드는 MySQL 데이터베이스에서 로그인한 사용자의 사용자 이름(user), 호스트(host), 연결 시간(time)을 조회합니다. command = ‘Connect’ 조건은 로그인한 연결만 조회하도록 필터링합니다.

3. PostgreSQL

PostgreSQL에서는 pg_stat_activity 시스템 뷰를 사용하여 로그인 이력을 조회할 수 있습니다. 다음은 해당 방법의 예시 코드입니다.

SELECT
    usename,
    client_addr,
    backend_start
FROM
    pg_stat_activity
WHERE
    state = 'active';

위의 코드는 PostgreSQL 데이터베이스에서 현재 활성 상태인 사용자의 사용자 이름(usename), 클라이언트 주소(client_addr), 백엔드 시작 시간(backend_start)을 조회합니다. state = ‘active’ 조건은 현재 활성 상태인 연결만 조회하도록 필터링합니다.

4. Oracle Database

Oracle Database에서는 V$SESSION 뷰를 사용하여 로그인 이력을 조회할 수 있습니다. 다음은 해당 방법의 예시 코드입니다.

SELECT
    username,
    machine,
    program
FROM
    v$session
WHERE
    type = 'USER';

위의 코드는 Oracle Database에서 로그인한 사용자의 사용자 이름(username), 호스트 이름(machine), 프로그램 이름(program)을 조회합니다. type = ‘USER’ 조건은 사용자 연결만 조회하도록 필터링합니다.

위의 예시 코드를 사용하여 데이터베이스의 로그인 이력을 조회할 수 있습니다. 각 데이터베이스 시스템에 따라 해당되는 코드를 사용하시면 됩니다.

참고 자료