MySQL에서 SHOW DATABASES를 알아야 하는 이유
MySQL을 사용하다 보면 서버에 어떤 데이터베이스가 존재하는지 확인해야 할 일이 많습니다.
특히 운영 환경에서는 여러 DB가 공존하기 때문에 실수로 잘못된 DB에서 작업하지 않도록 항상 데이터베이스 목록을 점검하는 것이 중요하죠.
SHOW DATABASES 문은 이럴 때 가장 기본적이고 간단한 방법으로, 현재 MySQL 서버에 존재하는 모든 데이터베이스 이름을 확인할 수 있습니다.
SHOW DATABASES 기본 사용법
SHOW DATABASES는 현재 사용자가 접근 권한을 가진 모든 데이터베이스를 리스트로 반환합니다.
기본 문법은 매우 간단합니다.
SHOW DATABASES;
실행하면 information_schema, mysql, performance_schema 같은 시스템 DB와 사용자가 만든 일반 DB가 함께 출력됩니다.
실무에서 자주 쓰이는 옵션과 활용 시나리오
1. LIKE 패턴으로 특정 DB만 찾기
데이터베이스 이름이 많을 때는 LIKE를 사용해 원하는 DB만 필터링할 수 있습니다.
SHOW DATABASES LIKE 'dev%';
위 예시는 dev로 시작하는 모든 데이터베이스 이름을 보여줍니다.
2. WHERE 절로 필터링하기 (MySQL 5.0.2 이상)
WHERE 절을 사용하면 information_schema.SCHEMATA 테이블의 컬럼 조건으로 더 복잡한 필터링이 가능합니다.
SHOW DATABASES WHERE `SCHEMA_NAME` != 'mysql';
이는 mysql DB를 제외한 나머지 데이터베이스만 보여주는 예시입니다.
3. 권한 관련 유의사항
SHOW DATABASES는 기본적으로 사용자가 SHOW DATABASES 권한을 가지고 있거나, 각 데이터베이스에 대한 최소한의 접근 권한이 있을 때만 해당 DB가 목록에 표시됩니다.
즉, 접근 권한이 없는 DB는 목록에 보이지 않기 때문에 관리자는 사용자 권한 설정 시 이 점을 반드시 고려해야 합니다.
예를 들어, 운영 DB가 노출되면 안 되는 개발자 계정에는 접근 권한을 제거해 SHOW DATABASES 결과에서도 보이지 않도록 설정할 수 있습니다.
MySQL 버전별 특징과 주의사항
- MySQL 5.0.2 이상: SHOW DATABASES에서 WHERE 절이 지원됩니다.
- MySQL 5.7 이상: performance_schema가 기본으로 포함되므로 시스템 DB 목록이 예전보다 늘어날 수 있습니다.
- MySQL 8.0: information_schema와 mysql 등 시스템 스키마 외에도 sys DB가 포함됩니다.
또한 caching_sha2_password 인증이 기본이라 사용자 권한이 없으면 일부 DB가 보이지 않을 수 있습니다.
결론과 실무 팁
SHOW DATABASES 문은 가장 기본적이지만 실수 방지와 서버 관리에 꼭 필요한 명령어입니다.
핵심 포인트를 다시 정리하면 다음과 같습니다.
- 현재 사용자에게 권한이 있는 데이터베이스만 출력된다.
- LIKE와 WHERE 절을 활용하면 원하는 DB만 쉽게 찾을 수 있다.
- 시스템 DB와 사용자 DB가 혼재하므로 작업 전 대상 DB가 맞는지 반드시 확인한다.
실무에서는 스크립트 자동화 시에도 SHOW DATABASES를 활용해 존재 여부를 확인한 뒤 조건부로 DB를 생성하거나 삭제하도록 하면 안전성을 높일 수 있습니다.
공식 문서 바로가기
'SQL > MYSQL' 카테고리의 다른 글
[MySQL] SHOW CREATE VIEW 사용법 완벽 가이드: 뷰(View) 정의 쉽게 확인하기 (0) | 2025.07.05 |
---|---|
[MySQL] SHOW CREATE USER 사용법 완벽 가이드: 사용자 계정 관리 쉽게 하기 (0) | 2025.07.04 |
[MySQL] SHOW CREATE TRIGGER 사용법과 실무 활용 가이드 (0) | 2025.07.03 |
[MySQL] SHOW CREATE TABLE 문 완벽 가이드: 테이블 구조 확인과 백업에 필수 (0) | 2025.07.02 |
[MySQL] SHOW CREATE PROCEDURE 사용법: 저장 프로시저 정의 쉽게 확인하기 (0) | 2025.06.30 |
[MySQL] SHOW CREATE FUNCTION 문 설명: 함수 정의 SQL 확인하기 (0) | 2025.06.29 |
[MySQL] SHOW CREATE EVENT 문 설명: 이벤트 정의 SQL 보기 (0) | 2025.06.29 |
[MySQL] SHOW CREATE DATABASE 문 설명: 데이터베이스 생성 SQL 확인하기 (0) | 2025.06.28 |