DB

[MySQL] DROP USER 완벽 가이드 사용법(사용자 계정 삭제)

인생아 2025. 4. 1. 13:07
반응형

MySQL에서 사용자 계정을 삭제하려면 DROP USER 명령어를 사용한다.
이 명령어는 특정 사용자 계정을 완전히 제거하며, 데이터베이스 보안 및 사용자 관리에 중요한 역할을 한다.

1. DROP USER 명령어란?

DROP USER 명령어는 MySQL 데이터베이스에서 특정 사용자 계정을 삭제하는 명령어다.
사용자가 더 이상 필요 없거나, 보안상의 이유로 계정을 제거해야 할 때 사용된다.

기본 구문

DROP USER '사용자명'@'호스트';
  • '사용자명'@'호스트' : 삭제할 사용자의 계정과 접속할 수 있는 호스트를 지정

예제 1: 특정 사용자 계정 삭제

DROP USER 'testuser'@'localhost';

위 명령어를 실행하면 testuser@localhost 계정이 삭제된다.
이제 해당 계정으로는 MySQL 서버에 접속할 수 없다.

예제 2: 원격 접속 사용자의 계정 삭제

DROP USER 'remoteuser'@'%';

'%' 는 모든 호스트를 의미하므로, 이 명령어를 실행하면 remoteuser 계정이 원격에서 접속할 수 없게 된다.

반응형

2. 여러 개의 사용자 삭제하기

MySQL에서는 한 번의 명령어로 여러 개의 사용자 계정을 삭제할 수도 있다.

예제 3: 여러 사용자 삭제

DROP USER 'devuser'@'localhost', 'adminuser'@'192.168.1.100';

이 명령어는 다음 두 개의 계정을 삭제한다.

  • devuser@localhost : 로컬에서만 접속 가능한 계정
  • adminuser@192.168.1.100 : 특정 IP에서만 접속 가능한 계정

3. DROP USER 사용 시 주의할 점

DROP USER 명령어를 사용할 때는 몇 가지 주의해야 할 사항이 있다.

1) 사용자 계정이 존재하지 않으면 오류 발생

MySQL에서 존재하지 않는 사용자를 삭제하려고 하면 다음과 같은 오류가 발생한다.

DROP USER 'nonexistent'@'localhost';

오류 메시지:

ERROR 1396 (HY000): Operation DROP USER failed for 'nonexistent'@'localhost'

이 문제를 방지하려면 IF EXISTS 옵션을 사용할 수 있다.

예제 4: 존재하는 경우에만 삭제

DROP USER IF EXISTS 'nonexistent'@'localhost';

이 명령어를 사용하면, 사용자가 존재할 경우에만 삭제하고, 존재하지 않을 경우 오류를 방지할 수 있다.

2) 사용자의 권한 정보도 함께 삭제됨

MySQL에서는 DROP USER 명령어를 실행하면 해당 사용자의 권한 정보도 함께 제거된다.
그러나 일부 테이블이나 데이터베이스에서 사용자가 여전히 존재할 수 있으므로 주의해야 한다.

반응형

4. 삭제 전 사용자 확인 방법

사용자를 삭제하기 전에, 현재 데이터베이스에 존재하는 사용자를 먼저 확인하는 것이 좋다.

예제 5: 현재 존재하는 사용자 목록 조회

SELECT User, Host FROM mysql.user;

이 명령어를 실행하면 MySQL에 등록된 모든 사용자 목록과 해당 사용자의 접속 가능한 호스트 정보가 출력된다.

예제 6: 특정 사용자 존재 여부 확인

SELECT User, Host FROM mysql.user WHERE User = 'testuser';

이 명령어는 testuser 계정이 존재하는지 확인하는 데 사용된다.

5. 삭제 후 사용자 접속 여부 확인

사용자 계정을 삭제한 후, 해당 계정이 정상적으로 삭제되었는지 확인하려면 다시 mysql.user 테이블을 조회하면 된다.

예제 7: 사용자 삭제 후 확인

SELECT User, Host FROM mysql.user WHERE User = 'testuser';

만약 결과가 출력되지 않는다면, 해당 계정이 정상적으로 삭제된 것이다.

6. 사용자 삭제 후 남아있는 데이터 정리

MySQL에서는 사용자를 삭제해도 해당 사용자가 소유한 데이터베이스, 테이블, 또는 객체들이 그대로 남아 있을 수 있다.
따라서, 사용자를 삭제한 후에는 불필요한 데이터가 남아 있는지 확인해야 한다.

예제 8: 특정 사용자가 소유한 데이터베이스 확인

SELECT schema_name FROM information_schema.schemata WHERE schema_name = 'testdb';

이 명령어를 사용하여 testdb 데이터베이스가 존재하는지 확인할 수 있다.

예제 9: 특정 사용자가 소유한 테이블 확인

SELECT table_schema, table_name FROM information_schema.tables WHERE table_schema = 'testdb';

이 명령어는 testdb 데이터베이스 내에 남아 있는 테이블들을 확인할 때 사용된다.

만약 사용자를 삭제한 후에도 불필요한 데이터가 남아 있다면, 직접 정리하는 것이 좋다.

예제 10: 사용자가 소유한 데이터베이스 삭제

DROP DATABASE testdb;

이 명령어를 실행하면 testdb 데이터베이스가 완전히 삭제된다.

반응형

7. DROP USER와 REVOKE의 차이점

DROP USER 명령어는 사용자 계정을 완전히 삭제하는 것이고, REVOKE 명령어는 사용자의 특정 권한만 회수하는 것이다.

예제 11: 사용자 권한 회수 (REVOKE 사용)

REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'testuser'@'localhost';

이 명령어는 testuser의 모든 권한을 회수하지만, 계정 자체는 삭제하지 않는다.

반면, DROP USER를 실행하면 해당 사용자의 모든 권한뿐만 아니라 계정 자체도 삭제된다.

마무리

MySQL의 DROP USER 명령어는 데이터베이스 보안을 유지하고, 불필요한 사용자 계정을 정리하는 데 매우 중요한 기능이다.
특정 사용자를 삭제할 때는 존재 여부를 먼저 확인하고, 삭제 이후에도 남아 있는 데이터가 있는지 점검하는 것이 좋다.
또한, 사용자를 삭제하는 것과 단순히 권한을 회수하는 것은 다르므로, 필요에 따라 REVOKE 명령어와 함께 활용하는 것이 중요하다.

반응형