Database/mysql & mariaDB

MariaDB → MySQL 사용자 정보 이관: 쿼리 추출과 비밀번호 재설정

봉의일상 2025. 6. 25. 22:29

MariaDB에서 MySQL로 사용자 계정과 권한을 이관할 때 핵심은 다음 두 가지입니다:

  1. 사용자 정보와 권한을 쿼리로 추출하여 이관
  2. 비밀번호는 새로 설정하는 방식으로 안전하게 적용

이 글에서는 사용자와 권한 정보를 효율적으로 옮기는 방법과, 왜 해시 복사보다 비밀번호 재설정이 바람직한지 설명합니다.


사용자 계정 및 권한 추출 쿼리

1. 사용자 계정 추출 (비밀번호 새로 설정 전용)

SELECT CONCAT('CREATE USER '', user, ''@'', host, '' IDENTIFIED BY '새비밀번호';')
FROM mysql.user
WHERE user NOT IN ('mysql.sys', 'mysql.session', 'root');
  • 새비밀번호는 실제 운영 정책에 맞게 지정합니다.
  • mysql_native_password나 해시를 쓰기보다는 명시적인 비밀번호 설정이 가장 안전합니다.

2. 사용자 권한 (GRANT) 추출

SELECT CONCAT('SHOW GRANTS FOR '', user, ''@'', host, '';')
FROM mysql.user
WHERE user NOT IN ('mysql.sys', 'mysql.session', 'root');
  • 이 결과를 실행하면 각 사용자에 대한 GRANT ... TO 문장이 출력됩니다.
  • 이를 그대로 MySQL에 붙여넣으면 권한 이관 완료!

왜 authentication_string 해시 복사는 위험할까?

문제 설먕
인증 방식 차이 MariaDB는 다양한 plugin (mysql_native_password, ed25519 등), MySQL은 기본 caching_sha2_password
해시 호환성 문제 export한 해시가 MySQL에서 오류 유발 가능
보안 위험 해시 자체가 유출되면 보안 사고 가능성 있음
NULL 또는 잘못된 값 일부 계정은 해시 값이 없거나 손상되어 있음

→ 따라서 비밀번호는 새로 지정하는 것이 정석입니다.


자동화 가능한 것 vs 수동 관리가 필요한 것

항목 자동 이관 설명
사용자명 / 호스트 가능 쿼리로 자동 추출 가능
비밀번호 해시 일부 가능 mysql_native_password만 호환되며 추천하지 않음
GRANT 권한 가능 SHOW GRANTS로 복원 가능
인증 플러그인 설정 불가 수동으로 지정 필요 (필요 시 mysql_native_password 지정)
정책/역할/리소스 그룹 불가 환경에 맞게 수동 확인 필요

정리

  • 사용자 목록과 권한은 쿼리로 추출하면 거의 자동 이관 가능
  • 비밀번호는 반드시 새로 설정하자 (안전 + 호환성)
  • 해시 복사는 호환성/보안상 위험하므로 지양

운영 환경에서 안정적이고 반복 가능한 사용자 이관을 원한다면, 사용자 추출 쿼리 + 비밀번호 재설정 + GRANT 복원의 3단계 전략이 가장 실용적입니다.