第 1 章:安裝與初始化
1.1 安裝 MariaDB (CentOS/RHEL)
yum install -y mariadb*
1.2 服務啟動與開機自啟
systemctl restart mariadb
systemctl enable mariadb
1.3 安全初始化
mysql_secure_installation
交互過程中:設定 root 密碼、移除匿名用戶、禁止 root 遠程登入、刪除 test 庫、重新載入權限表。除密碼設置外,其餘全部輸入 y 確認。
1.4 查看版本
SELECT VERSION();
第 2 章:數據庫級操作
| 操作 | SQL 語句 |
| 查看所有庫 | SHOW DATABASES; |
| 創建庫 (UTF-8) | CREATE DATABASE db_name DEFAULT CHARSET utf8 COLLATE utf8_general_ci; |
| 刪除庫 | DROP DATABASE db_name; |
| 切換庫 | USE db_name; |
第 3 章:常用數據類型速查表
3.1 日期時間類型
| 類型 | 存儲 | 格式範例 | 說明 |
| DATE | 3 字節 | 2024-01-15 | 日期 |
| TIME | 3 字節 | 14:30:00 | 時間 |
| DATETIME | 8 字節 | 2024-01-15 14:30:00 | 日期時間,無時區 |
| TIMESTAMP | 4 字節 | 1970-2038 | 自動記錄修改時間,帶時區 |
| YEAR | 1 字節 | 2024 | 年份 |
3.2 整數類型 (有符號範圍)
| 類型 | 字節 | 範圍 |
| TINYINT | 1 | -128 ~ 127 |
| SMALLINT | 2 | -32,768 ~ 32,767 |
| MEDIUMINT | 3 | -8,388,608 ~ 8,388,607 |
| INT | 4 | -2,147,483,648 ~ 2,147,483,647 |
| BIGINT | 8 | ±9.22×10¹⁸ |
3.3 浮點/定點類型
| 類型 | 字節 | 說明 |
| FLOAT(M,D) | 4 | 單精度,M 總位數,D 小數位 |
| DOUBLE(M,D) | 8 | 雙精度 |
| DECIMAL(M,D) | M+2 | 定點數,以字符串存儲,精確計算首選 |
3.4 字符串類型
| 類型 | 最大長度 | 特點 |
| CHAR(N) | 255 字符 | 定長,補空格 |
| VARCHAR(N) | 65,535 字符 | 變長,需 1-2 字節存長度 |
| TINYTEXT | 255 字符 | 小文本 |
| TEXT | 65,535 字符 | 常用文本 |
| MEDIUMTEXT | 16,777,215 字符 | 中等文本 |
| LONGTEXT | 4,294,967,295 字符 | 大文本 |
第 4 章:表操作
4.1 創建表
CREATE TABLE `list` (
`id` INT,
`name` VARCHAR(50),
`passwd` VARCHAR(100)
);
4.2 查看表結構
DESC table_name;
4.3 查看庫中所有表
SHOW TABLES;
4.4 刪除表
DROP TABLE table_name;
4.5 修改表 (ALTER TABLE)
| 操作 | 語法 |
| 重命名表 | ALTER TABLE old_name RENAME new_name; |
| 添加列 | ALTER TABLE tbl ADD col_name data_type; |
| 刪除列 | ALTER TABLE tbl DROP COLUMN col_name; |
| 修改列類型 | ALTER TABLE tbl MODIFY col_name new_type; |
| 重命名列 | ALTER TABLE tbl CHANGE old_col new_col data_type; |
第 5 章:數據增刪改查 (CRUD)
5.1 插入數據
-- 全列插入
INSERT INTO tbl VALUES (1, 'zhangsan', 'pass123');
-- 指定列插入
INSERT INTO tbl (name, passwd) VALUES ('lisi', 'pass456');
5.2 查詢數據
-- 全列
SELECT * FROM tbl;
-- 指定列
SELECT name, passwd FROM tbl;
5.3 條件查詢 (WHERE)
SELECT * FROM tbl WHERE id = 3;
SELECT * FROM tbl WHERE id > 3;
SELECT * FROM tbl WHERE id <> 3; -- 不等於
SELECT * FROM tbl WHERE id >= 3;
5.4 刪除數據
-- 刪除所有 (慎用)
DELETE FROM tbl;
-- 條件刪除
DELETE FROM tbl WHERE id = 3;
-- 字符串需加單引號
DELETE FROM tbl WHERE name = 'zhangsan';
5.5 更新數據
UPDATE tbl SET passwd = 'newpass' WHERE id = 3;
5.6 去重 (DISTINCT)
SELECT DISTINCT name FROM tbl;
5.7 邏輯組合 (AND / OR)
SELECT * FROM tbl WHERE name = 'zhangsan' AND id = 1;
SELECT * FROM tbl WHERE name = 'zhangsan' OR id = 0;
5.8 排序 (ORDER BY)
-- 升序
SELECT * FROM tbl ORDER BY id;
-- 降序
SELECT * FROM tbl ORDER BY id DESC;
第 6 章:用戶與權限管理
6.1 用戶操作
-- 創建用戶
CREATE USER 'luigi'@'%' IDENTIFIED BY 'redhat-passwd';
FLUSH PRIVILEGES;
-- 刪除用戶
DROP USER 'luigi'@'%';
FLUSH PRIVILEGES;
-- 重命名用戶
RENAME USER 'luigi'@'%' TO 'natasha'@'%';
FLUSH PRIVILEGES;
-- 修改密碼 (當前用戶)
SET PASSWORD = PASSWORD('newpass');
FLUSH PRIVILEGES;
-- 修改指定用戶密碼
SET PASSWORD FOR 'zhangsan'@'%' = PASSWORD('newpass');
FLUSH PRIVILEGES;
6.2 權限層級與授權 (GRANT/REVOKE)
| 層級 | 範例 |
| 全局 | GRANT ALL ON *.* TO 'user'@'%' IDENTIFIED BY 'pass'; |
| 庫級 | GRANT SELECT ON db_name.* TO 'user'@'localhost'; |
| 表級 | GRANT INSERT, UPDATE ON db_name.tbl TO 'user'@'%'; |
| 列級 | GRANT SELECT (col1, col2) ON db_name.tbl TO 'user'@'%'; |
-- 撤銷權限
REVOKE ALL PRIVILEGES FROM 'luigi'@'%';
FLUSH PRIVILEGES;
-- 主機通配符授權
GRANT ALL PRIVILEGES ON *.* TO 'luigi'@'%.example.com' IDENTIFIED BY 'pass';
FLUSH PRIVILEGES;
第 7 章:Root 密碼找回 (MariaDB/MySQL 通用)
# 1. 停止服務
systemctl stop mariadb
# 2. 跳過授權表啟動
mysqld_safe --skip-grant-tables --user=mysql &
# 3. 免密登入修改密碼
mysql -u root
UPDATE mysql.user SET Password = PASSWORD('新密碼') WHERE User = 'root' AND Host = 'localhost';
FLUSH PRIVILEGES;
\q
# 4. 正常重啟
mysqladmin -u root -p shutdown # 輸入新密碼
systemctl restart mariadb
第 8 章:備份與恢復
8.1 備份單庫
mysqldump -u root -p db_name > /backup/path/db_name.sql
8.2 恢復單庫
mysql -u root -p db_name < /backup/path/db_name.sql
總結
本手冊涵蓋了 MariaDB/MySQL 從安裝、數據類型、表操作、CRUD、用戶權限到備份恢復的核心基礎操作。建議初學者按章節實操練習,重點掌握:
- 數據類型選擇原則 (如金額用 DECIMAL、長文本用 TEXT)
ALTER TABLE 修改表結構的各種語法
GRANT 權限最小化原則
mysqldump 邏輯備份與恢復流程
- Root 密碼找回的標準步驟
熟練這些基礎,是進階 SQL 優化、架構設計的基石。