MariaDB 사용자 패스워드 만료일 확인 및 설정하는 방법

MariaDB 사용자 패스워드 만료일 확인 및 설정하는 방법

MariaDB에서 보안 관리를 위해 사용자의 패스워드 만료일을 설정하고 확인하는 방법에 대해 알아봅니다. 이를 통해 보안을 강화하고, 일정 기간이 지나면 사용자가 패스워드를 변경하도록 강제할 수 있습니다. 특히 mysql.global_priv 테이블의 priv 필드에 저장된 JSON 값을 사용하여 패스워드 만료일을 확인할 수 있습니다.

1. MariaDB 사용자 계정 생성 및 패스워드 만료일 설정

먼저, MariaDB에서 사용자를 생성하고, 패스워드 만료일을 설정하는 방법을 살펴보겠습니다. 아래 쿼리는 user2라는 계정을 만들고 패스워드 만료일을 90일로 설정하는 예시입니다.

CREATE USER 'user2'@'localhost' IDENTIFIED BY '1234';
ALTER USER 'user2'@'localhost' PASSWORD EXPIRE INTERVAL 90 DAY;

이 쿼리는 사용자를 생성한 후 90일 이후에 패스워드가 만료되도록 설정하는 방식입니다.

2. 사용자 패스워드 만료일 확인 쿼리

패스워드 만료일을 확인하려면 mysql.global_priv 테이블에서 priv 필드를 확인해야 합니다. 이 필드에는 패스워드가 마지막으로 변경된 시간과 만료일 정보가 JSON 형식으로 저장되어 있습니다.

{
  "password_last_changed": 1728653256,
  "password_expire": 90
}

아래는 user2 사용자의 패스워드 만료일을 확인하는 쿼리입니다.

SELECT
  user,
  host,
  FROM_UNIXTIME(CAST(JSON_EXTRACT(priv, '$.password_last_changed') AS UNSIGNED)) AS password_last_changed,
  CAST(JSON_EXTRACT(priv, '$.password_lifetime') AS UNSIGNED) AS password_lifetime,
  DATE_ADD(
    FROM_UNIXTIME(CAST(JSON_EXTRACT(priv, '$.password_last_changed') AS UNSIGNED)),
    INTERVAL CAST(JSON_EXTRACT(priv, '$.password_lifetime') AS UNSIGNED) DAY
  ) AS password_expires
FROM
  mysql.global_priv
WHERE
  user = 'user2';

이 쿼리는 priv 필드에서 password_last_changedpassword_lifetime 값을 추출하고, 이를 통해 패스워드 만료일을 계산합니다.

사용자 패스워드 만료일 확인 쿼리 예시 화면

3. 마무리

MariaDB에서 사용자 패스워드의 만료일을 설정하고 관리하는 방법은 보안을 유지하는 데 필수적인 요소입니다. 특히, 패스워드가 주기적으로 변경되도록 관리하는 것은 보안 정책을 강화하는 좋은 방법입니다. 위에서 설명한 쿼리를 사용하여 사용자 계정의 패스워드 만료일을 확인하고, 필요시 적절히 조정하면 됩니다.

함께 보면 좋은 게시글

위로 스크롤