DB

[MySQL] (권한관리6️⃣) 사용자 권한 확인 및 변경, 삭제 실무 명령어 정리

인생아 2025. 7. 11. 14:32
반응형

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

반응형