首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 建立資料庫的兩種標準方法:命令列工具與程式化介面

     編輯:MySQL 資料庫相關知識

建立資料庫是 MySQL 運維與開發的高頻操作。本文對比 mysqladmin 命令列工具與 PHP 程式化介面兩種主流建庫方式,解析適用場景、權限模型與現代化最佳實踐。

方法一:mysqladmin 命令列工具(運維首選)

mysqladmin 是官方提供的管理客戶端,支援建庫、刪庫、狀態檢視等核心功能。

基本語法

mysqladmin -u root -p create DATABASE_NAME

實戰範例

[root@host]# mysqladmin -u root -p create TUTORIALS
Enter password:******
# 成功無輸出,驗證:
mysql -u root -p -e "SHOW DATABASES LIKE 'TUTORIALS'"

核心優勢

  • 腳本化友善: 可整合至 Shell/Python/Ansible 自動化部署流程
  • 權限最小化: 僅需 CREATE 權限,可建立專用運維帳號
  • 無交互確認風險: 不像 DROP 有確認提示,適合 CI/CD 流水線
  • 字符集控制: 可搭配 --default-character-set=utf8mb4 強制編碼

進階用法

# 指定字符集與排序規則(需 MySQL 5.5+)
mysqladmin -u root -p --default-character-set=utf8mb4 create TUTORIALS

# 批次建庫(配合 Shell 迴圈)
for db in app_user app_order app_log; do
  mysqladmin -u root -p${PWD} create ${db} || echo "Failed: ${db}"
done

方法二:程式化介面(應用整合場景)

現代應用極少直接使用已棄用的 mysql_* 函數,本節以 mysqli (物件導向) 為例示範標準建庫模式。

mysqli 物件導向範例

<?php
$host = 'localhost';
$user = 'root';
$pass = 'rootpassword';
$charset = 'utf8mb4';

$mysqli = new mysqli($host, $user, $pass);
if ($mysqli->connect_errno) {
    die("連線失敗: " . $mysqli->connect_error);
}
$mysqli->set_charset($charset);

$dbName = 'TUTORIALS';
// 防 SQL 注入:識別符需用 backtick 包裹,不接受使用者輸入
$sql = "CREATE DATABASE IF NOT EXISTS `$dbName` 
        DEFAULT CHARACTER SET $charset 
        COLLATE ${charset}_unicode_ci";

if ($mysqli->query($sql)) {
    echo "資料庫 $dbName 建立成功\n";
} else {
    die("建立失敗: " . $mysqli->error);
}
$mysqli->close();
?>

PDO 範例(跨資料庫抽象層)

<?php
$dsn = "mysql:host=localhost;charset=utf8mb4";
$pdo = new PDO($dsn, 'root', 'rootpassword', [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_EMULATE_PREPARES => false,
]);
$dbName = 'TUTORIALS';
$pdo->exec("CREATE DATABASE IF NOT EXISTS `$dbName` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci");
echo "資料庫 $dbName 建立成功\n";
?>

兩種方式深度對比

維度mysqladminmysqli / PDO
適用角色DBA、運維、自動化腳本應用開發、安裝向導、管理後台
部署依賴MySQL 客戶端套件PHP 擴充模組 (mysqli/pdo_mysql)
字符集控制參數 --default-character-setSQL 子句 DEFAULT CHARACTER SET
錯誤處理退出碼 + stderrException / 錯誤碼 + 錯誤訊息
事務支援無(DDL 隱式提交)無(DDL 隱式提交)
現代化程度成熟穩定需使用 mysqli/PDO,棄用 mysql_*

生產環境最佳實踐

  1. 統一字符集: 所有建庫操作強制指定 utf8mb4 + utf8mb4_unicode_ci
  2. 冪等設計: 使用 CREATE DATABASE IF NOT EXISTS 避免重複執行報錯
  3. 權限最小化: 建立專用 db_creator@'%' 帳號,僅授 CREATE、SHOW DATABASES 權限
  4. 審計追蹤: 記錄建庫時間、操作人、目的、目標字符集至變更管理系統
  5. 驗證機制: 建庫後自動執行 SHOW CREATE DATABASE 驗證字符集生效
💡 遷移提醒: 存量專案若仍使用 mysql_connect()、mysql_query() 等 PHP 5 時代 API,請優先排程遷移至 mysqli 或 PDO,避免 PHP 8+ 環境直接失效。

無論命令列還是程式化介面,「顯式字符集、冪等邏輯、最小權限、審計留痕」是建庫操作的四大鐵律。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved