記得實習面試時被問「會不會資料庫」,自信回答「會基礎」,結果被追問一堆細節答不上來。那次挫折讓我下定決心,系統性補齊 MySQL 基礎。本文記錄我跟著《MySQL in a nutshell》從零開始的學習軌跡,涵蓋安裝、配置、帳號管理、建庫建表、資料操作與腳本化執行。
aptitude install mysql-server(或 apt-get install mysql-server)/etc/mysql/my.cnf
# 檢查 mysqld 進程 ps -ef | grep mysqld # 以 root 登入 mysql -u root -p
SELECT User, Host FROM mysql.user;
輸出範例:
+------------------+-----------+ | User | Host | +------------------+-----------+ | root | localhost | | debian-sys-maint | localhost | | wordpress | localhost | +------------------+-----------+
-- 修改 root 密碼(MySQL 5.7+ 建議用 ALTER USER) ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'; FLUSH PRIVILEGES; -- 建立新使用者並授權 CREATE USER 'app_user'@'%' IDENTIFIED BY 'strong_pwd'; GRANT ALL PRIVILEGES ON mydb.* TO 'app_user'@'%'; FLUSH PRIVILEGES;
CREATE DATABASE bookstore;
USE bookstore;
-- 初版 books 表
CREATE TABLE books (
book_id INT,
title VARCHAR(100),
author VARCHAR(50)
);
-- 後續用 SQL 檔案批次修改結構(避免命令列手誤)
-- alter_books.sql
ALTER TABLE books
MODIFY book_id INT AUTO_INCREMENT PRIMARY KEY,
CHANGE author author_id INT,
ADD description TEXT,
ADD genre ENUM('fiction','non-fiction','tech'),
ADD publisher_id INT,
ADD pub_year YEAR,
ADD isbn CHAR(13);
執行方式:
mysql> SOURCE /path/to/alter_books.sql;
CREATE TABLE authors ( author_id INT AUTO_INCREMENT PRIMARY KEY, author_last VARCHAR(50), author_first VARCHAR(50), country VARCHAR(50) ); -- 查看所有表 SHOW TABLES; -- +----------------+ -- | Tables_in_bookstore | -- +----------------+ -- | authors | -- | books | -- +----------------+
.sql,用 SOURCE 或 mysql < file.sql 執行,可版控、可重現、不怕手抖。AUTO_INCREMENT 整數:效能最好、複合索引最小、複製/分片最簡單。validate_password 元件,禁止弱密碼。這篇筆記走完了「安裝 → 配置 → 帳號 → 建庫 → 建表 → 修改結構 → 關聯查詢」的完整閉環。下一步將深入索引設計、查詢優化、事務與鎖機制——那些面試官最愛問、也是實戰最痛的地方。