首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 創建資料庫兩大方法:mysqladmin 與 PHP 腳本完整指南

     編輯:MySQL 綜合教學

MySQL CREATE DATABASE 實戰:命令列交互確認與程式化自動化部署

建立資料庫是資料庫初始化、應用部署、測試環境構建的高頻操作。本文對比 mysqladmin 命令列工具(簡單直接)與 PHP mysql_query 程式化創建(可整合 CI/CD、參數化管理)兩種核心方式,提供命名規範、字符集選擇、權限配置、自動化部署最佳實踐。

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

操作流程

# 以 root 權限創建(需 CREATE 權限)
mysqladmin -u root -p create TUTORIALS
Enter password: ******

# 成功無輸出,驗證:
mysql -u root -p -e "SHOW DATABASES LIKE 'TUTORIALS';"

優勢特徵

  • 單指令完成,適合交互式運維、Shell 腳本嵌入
  • 無確認提示(與 DROP 對比),效率高
  • 依賴最小,MySQL 官方標配工具

二、方法二:PHP 腳本程式化創建(應用層整合)

語法與參數

bool mysql_query(string $sql, resource $link_identifier = null)
-- $sql: CREATE DATABASE db_name [CHARACTER SET charset] [COLLATE collation]

完整程式碼範例(含字符集、錯誤處理、冪等判斷)

<?php
// 配置參數化
$db_host = 'localhost:3036';
$db_user = 'root';
$db_pass = 'rootpassword';
$target_db = 'TUTORIALS';
$charset = 'utf8mb4';
$collation = 'utf8mb4_unicode_ci';

$conn = mysql_connect($db_host, $db_user, $db_pass);
if (!$conn) {
    die('連接失敗: ' . mysql_error());
}
echo '連接成功<br />';

// 冪等檢查:避免重複創建報錯
$check_sql = "SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = '$target_db'";
$check_result = mysql_query($check_sql, $conn);
if (mysql_num_rows($check_result) > 0) {
    echo "資料庫 $target_db 已存在,跳過創建。\n";
    mysql_close($conn);
    exit(0);
}

// 創建語句:顯式指定字符集與排序規則
$sql = "CREATE DATABASE `$target_db` CHARACTER SET $charset COLLATE $collation";
$retval = mysql_query($sql, $conn);
if (!$retval) {
    die('創建資料庫失敗: ' . mysql_error());
}
echo "資料庫 $target_db 創建成功 (charset=$charset, collation=$collation)\n";

mysql_close($conn);
?>

三、資料庫命名與字符集規範

規範項建議標準說明
命名風格snake_case、小寫、業務前綴如:biz_order、biz_user、log_audit
長度限制≤ 64 字元MySQL 識別符上限
字符集utf8mb4 (MySQL 5.5.3+)完整 Unicode、支援 Emoji、避免 utf8 偽集
排序規則utf8mb4_unicode_ci / utf8mb4_0900_ai_ciUnicode 標準排序、8.0 推薦 0900_ai_ci
禁止字符保留字、特殊符號、空格需反引號包裹才能使用

四、創建後必執行初始化清單

  1. 建立業務專用帳號:
    CREATE USER 'app_user'@'%' IDENTIFIED BY 'StrongPass123!';
    GRANT SELECT, INSERT, UPDATE, DELETE, EXECUTE ON `biz_order`.* TO 'app_user'@'%';
    FLUSH PRIVILEGES;
  2. 啟用 Binlog(若需復制/備份):確認 log_bin=ON
  3. 配置時區:SET GLOBAL time_zone = '+08:00'; 或 my.cnf default-time-zone = '+08:00'
  4. 建立核心表結構:執行 Flyway/Liquibase 遷移腳本
  5. 驗證連接池:應用端測試連接獲取、簡單查詢

五、自動化部署整合模式

# Ansible Task 範例
- name: Create MySQL database
  community.mysql.mysql_db:
    name: "{{ db_name }}"
    encoding: utf8mb4
    collation: utf8mb4_unicode_ci
    state: present
    login_user: root
    login_password: "{{ mysql_root_password }}"

# Terraform Resource 範例
resource "mysql_database" "app_db" {
  name      = var.db_name
  charset   = "utf8mb4"
  collation = "utf8mb4_unicode_ci"
}

六、總結

運維手工用 mysqladmin、自動化部署用 IaC/腳本。核心鐵律:統一 utf8mb4、顯式排序規則、冪等創建、最小權限帳號、遷移腳本版本化。建議將資料庫創建納入標準化環境佈建流程,實現「一鍵交付、配置即代碼、狀態可驗證」。

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