PHP를 사용하면 서버에 존재하는 사용 가능한 MySQL 데이터베이스 목록을 손쉽게 조회할 수 있습니다. 핵심은 MySQL 서버에 먼저 연결한 후, 데이터베이스 목록을 가져오는 전용 함수를 호출하는 것입니다.
기본 예제 코드
<?php
$con = mysql_connect("localhost", "userid", "password");
if (!$con) {
die('Could not connect: ' . mysql_error());
}
$db_list = mysql_list_dbs($con);
while ($db = mysql_fetch_object($db_list)) {
echo $db->Database . "<br />";
}
mysql_close($con);
?>
코드 동작 원리
위 스크립트는 다음과 같은 순서로 동작합니다.
1. mysql_connect() 함수로 localhost의 MySQL 서버에 접속합니다. 접속에 실패하면 die()를 통해 오류 메시지와 함께 실행을 중단합니다.
2. mysql_list_dbs() 함수가 현재 계정이 접근할 수 있는 모든 데이터베이스의 목록을 반환합니다.
3. while 루프와 mysql_fetch_object()를 이용해 결과를 한 줄씩 읽어 들이며, 각 데이터베이스 이름을 화면에 출력합니다.
4. 작업이 끝나면 mysql_close()로 연결을 종료하여 리소스를 해제합니다.
주의: 구식 함수는 더 이상 지원되지 않습니다
위 예제에서 사용한 mysql_* 계열 함수는 PHP 5.5부터 폐기(deprecated)되었으며, PHP 7부터는 완전히 제거되었습니다. 따라서 최신 환경에서는 위 코드가 동작하지 않으므로, 반드시 mysqli 확장 또는 PDO를 사용해야 합니다.
mysqli를 이용한 최신 방식
<?php
$con = new mysqli("localhost", "userid", "password");
if ($con->connect_error) {
die('Could not connect: ' . $con->connect_error);
}
$result = $con->query("SHOW DATABASES");
while ($row = $result->fetch_assoc()) {
echo $row['Database'] . "<br />";
}
$con->close();
?>
mysqli 버전에서는 SHOW DATABASES SQL 문을 직접 실행하여 동일한 결과를 얻습니다. 객체 지향 방식으로 작성되어 코드 가독성이 뛰어나고, 현재 대부분의 호스팅 환경에서 안정적으로 동작합니다.
PDO를 이용한 방식
<?php
try {
$pdo = new PDO('mysql:host=localhost;charset=utf8mb4', 'userid', 'password');
$rows = $pdo->query('SHOW DATABASES')->fetchAll(PDO::FETCH_COLUMN);
foreach ($rows as $dbName) {
echo $dbName . "<br />";
}
} catch (PDOException $e) {
die('Could not connect: ' . $e->getMessage());
}
?>
PDO는 여러 데이터베이스 시스템을 지원하므로, 추후 MySQL 외의 DBMS로 전환할 가능성이 있다면 PDO 사용을 권장합니다.
정리
MySQL 데이터베이스 목록 조회는 기본적으로 서버 연결 → SHOW DATABASES 실행 → 결과 출력의 흐름으로 이루어집니다. 레거시 코드 유지보수가 아니라라면 mysql_* 함수 대신 mysqli나 PDO를 사용하는 것이 보안과 호환성 측면에서 훨씬 안전합니다.