資料庫的建立與刪除是 MySQL 入門的第一課。本文提供標準 SQL 語法、完整權限配置流程與實戰範例,助您快速掌握核心指令。
CREATE DATABASE [IF NOT EXISTS] db_name
[DEFAULT CHARACTER SET charset_name]
[DEFAULT COLLATE collation_name];
-- 1. 建立資料庫(指定 utf8mb4)
CREATE DATABASE xhkdb DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
-- 2. 建立專用使用者並授權(僅允許本機連線)
CREATE USER 'xhkdb'@'localhost' IDENTIFIED BY 'StrongPass123!';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER, INDEX ON xhkdb.* TO 'xhkdb'@'localhost';
-- 3. 刷新權限生效
FLUSH PRIVILEGES;
說明:
IF NOT EXISTS:避免資料庫已存在時報錯。utf8mb4 支援完整 Unicode(含 Emoji),優於舊版 utf8。DROP DATABASE [IF EXISTS] db_name;
-- 刪除確定存在的資料庫
DROP DATABASE xhkdb;
-- 安全刪除(不存在不報錯)
DROP DATABASE IF EXISTS drop_database;
-- Query OK, 0 rows affected (0.00 sec)
⚠️ 警告:DROP DATABASE 會永久刪除資料庫內所有表、資料、視圖、程序等,且無法恢復。執行前請三思並確認已備份!
SHOW DATABASES;
USE db_name;
| 錯誤 | 原因 | 解決 |
|---|---|---|
| ERROR 1007 (HY000): Can't create database 'x'; database exists | 資料庫已存在 | 加上 IF NOT EXISTS 或先 DROP |
| ERROR 1008 (HY000): Can't drop database 'x'; database doesn't exist | 資料庫不存在 | 加上 IF EXISTS |
| ERROR 1044 (42000): Access denied for user 'u'@'%' to database 'x' | 權限不足 | 使用 root 或具 CREATE/DROP 權限帳號 |
order_db、user_center)。utf8mb4 + utf8mb4_general_ci。