創建/刪除數據庫屬於 DDL,需 CREATE/DROP DATABASE 權限。本文覆蓋 **命令行 mysqladmin**、**SQL 語句**、**PHP mysql_query (舊) / mysqli/PDO (新)** 三種方式,並強調防誤刪機制。
mysqladmin (需 root 權限)mysqladmin -u root -p create tutorials # Enter password: ******
mysqladmin -u root -p drop tutorials # Dropping the database is potentially a very bad thing... # Do you really want to drop the 'tutorials' database [y/N] y # Database "tutorials" dropped
優點:有交互確認提示,降低手滑風險。缺點:無法在腳本中靜默執行 (需 expect 或 echo y |)。
CREATE DATABASE tutorials CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; DROP DATABASE tutorials; -- 無確認,立即執行,極度危險
最佳實踐:指定 CHARACTER SET utf8mb4,支援 Emoji 與完整 Unicode。
$mysqli = new mysqli('localhost', 'root', 'rootpassword');
if ($mysqli->connect_errno) die("連接失敗: " . $mysqli->connect_error);
$sql = "CREATE DATABASE tutorials CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci";
if ($mysqli->query($sql)) {
echo "資料庫創建成功";
} else {
die("創建失敗: " . $mysqli->error);
}
$mysqli->close();
$mysqli = new mysqli('localhost', 'root', 'rootpassword');
$sql = "DROP DATABASE tutorials";
if ($mysqli->query($sql)) {
echo "資料庫刪除成功";
} else {
die("刪除失敗: " . $mysqli->error);
}
$mysqli->close();
注意:PHP 腳本執行 DROP DATABASE **無交互確認**,極易誤刪。建議封裝函數要求雙重驗證 (如輸入庫名兩次、輸入確認碼、寫操作日誌審計)。
$pdo = new PDO('mysql:host=localhost', 'root', 'rootpassword', [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
]);
// 創建
$pdo->exec("CREATE DATABASE tutorials CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci");
echo "創建成功";
// 刪除
$pdo->exec("DROP DATABASE tutorials");
echo "刪除成功";
utf8mb4,避免後續 ALTER DATABASE 鎖表重建。DROP DATABASE 權限;僅在部署/運維腳本中用 root 執行。DROP 前務必確認有可用備份 (邏輯/物理/快照)。DROP 會導致報錯或數據不一致。創建庫用 CREATE DATABASE ... CHARACTER SET utf8mb4,刪除庫**三思而後行**,生產環境必走**審批單 + 備份驗證 + 雙人確認**流程。PHP 操作首選 mysqli/PDO 異常模式,封裝安全封裝層防誤刪。