반응형
MySQL에서 사용자 권한을 제대로 관리하려면, 정확한 조회와 신속한 변경, 안전한 삭제가 필수다.
사용자 권한은 보안과 직결되기 때문에 명령어를 정확히 알고 있어야 실무에서 오류 없이 대응할 수 있다.

🔍 사용자 권한 확인 방법
✅ SHOW GRANTS
SHOW GRANTS FOR '사용자명'@'호스트';
예시:
SHOW GRANTS FOR 'devuser'@'%';
출력 예:
GRANT SELECT, INSERT ON `testdb`.* TO 'devuser'@'%';
- 해당 사용자가 부여받은 모든 권한을 나열해 준다.
✅ 전체 사용자 목록 확인
SELECT user, host FROM mysql.user;
- 계정 이름과 접속 허용 호스트(IP/도메인)를 확인 가능
✅ 권한 제한 항목까지 함께 조회
SELECT user, host, max_questions, max_updates, max_connections
FROM mysql.user;
반응형
🛠️ 사용자 권한 변경 방법
✅ 기존 권한 제거 후 재부여
MySQL은 GRANT로 권한을 추가만 할 수 있고, 변경하려면 기존 권한을 제거한 뒤 재설정해야 한다.
REVOKE INSERT, UPDATE ON mydb.* FROM 'devuser'@'%';
GRANT SELECT ON mydb.* TO 'devuser'@'%';
- 권한 변경은 항상 REVOKE → GRANT 순서로 처리
✅ 사용자 비밀번호 변경
ALTER USER 'devuser'@'%' IDENTIFIED BY 'newpassword!';
- 실무에서 계정 보안 조치 시 자주 사용하는 명령어
❌ 사용자 계정 삭제 방법
✅ 안전하게 DROP USER
DROP USER 'testuser'@'%';
- 해당 계정과 그 권한 모두 제거됨
- 삭제 전 SHOW GRANTS로 반드시 권한 확인 필요
✅ 한 번에 여러 계정 삭제
DROP USER 'dev1'@'%', 'dev2'@'10.0.0.%';
- 정리 시 유용한 패턴
반응형
🧠 실무 운영 팁
- 사용자 삭제 후 권한 캐시 반영 불필요. 즉시 적용됨
- SHOW GRANTS로 권한 이력 확인 후 조치
- DROP USER 전 해당 계정이 현재 접속 중인지 확인 필요
SELECT user, host, db FROM information_schema.processlist WHERE user = 'devuser';
- 잘못 삭제하면 트리거나 저장 프로시저에 영향을 줄 수 있으니 사전 점검 필수
🔒 계정 비활성화 대안
삭제하지 않고 계정을 잠시 사용 중지하려면 RENAME USER로 변경해 둘 수도 있다.
RENAME USER 'devuser'@'%' TO 'devuser_inactive'@'%';
또는 임시 비밀번호로 변경 + 접근 제한:
ALTER USER 'devuser'@'%' ACCOUNT LOCK;
(단, ACCOUNT LOCK은 MySQL 8.0+에서만 가능)
✅ 정리
- 사용자 권한은 SHOW GRANTS, REVOKE, GRANT, DROP USER 명령어로 관리한다.
- 권한 변경은 제거 후 재부여 방식이 원칙이다.
- 사용자 삭제 전 접속 여부, 프로시저 연결 여부 반드시 점검해야 한다.
- 실수 방지를 위해 변경 내역을 문서화하고 정기 점검해야 한다.
- 권한 남용이나 미사용 계정 방치는 보안 리스크로 이어진다.
🔗 공식 문서 참고
MySQL 8.0 Reference Manual - Account Management Statements
반응형
'DB' 카테고리의 다른 글
| [MySQL] (백업/복구3️⃣) Binary Log 기반 백업 전략과 설정법 (2) | 2025.07.12 |
|---|---|
| [MySQL] (백업/복구2️⃣) mysqldump 백업과 복원 방법 완벽 가이드 (0) | 2025.07.12 |
| [MySQL] (백업/복구1️⃣) 백업의 모든 것: 개념, 필요성, 전략 총정리 (0) | 2025.07.12 |
| [MySQL] (권한관리7️⃣) 사용자 관리 실수 방지 체크리스트 (0) | 2025.07.11 |
| [MySQL] (권한관리5️⃣) 비밀번호 관리와 인증 보안 강화 전략 (0) | 2025.07.11 |
| [MySQL] (권한관리4️⃣) 사용자별 리소스 제한 설정하기 (연결 수, 쿼리 수 등) (2) | 2025.07.10 |
| [MySQL] (권한관리3️⃣) 사용자별 권한 제한: 최소 권한 원칙 실무 적용 (0) | 2025.07.10 |
| [MySQL] (권한관리2️⃣) GRANT 명령어 완전 정복: 실전 예제 모음 (1) | 2025.07.10 |