MariaDB에서 MySQL로 사용자 계정과 권한을 이관할 때 핵심은 다음 두 가지입니다:
- 사용자 정보와 권한을 쿼리로 추출하여 이관
- 비밀번호는 새로 설정하는 방식으로 안전하게 적용
이 글에서는 사용자와 권한 정보를 효율적으로 옮기는 방법과, 왜 해시 복사보다 비밀번호 재설정이 바람직한지 설명합니다.
사용자 계정 및 권한 추출 쿼리
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단계 전략이 가장 실용적입니다.
'Database > mysql & mariaDB' 카테고리의 다른 글
MySQL/MariaDB 마이그레이션 – SUPER 권한 & DEFINER 이슈 완전 정리 (0) | 2025.06.25 |
---|---|
MySQL 오류 3161: MyISAM 엔진 비활성화 오류 해결하기 (0) | 2025.06.25 |
MariaDB 10.3 → MySQL 8.0 이전시 CDC (Change Data Capture)가 가능할까? (0) | 2025.06.24 |
Azure MariaDB 서비스 종료, 중단 없이 전환할 수 있을까? (0) | 2025.06.24 |
Azure PaaS MariaDB에서 MySQL로 이관 전 DB 상태 체크 (0) | 2025.06.24 |